问题标签 [wgl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - wglGetProcAddress 返回 NULL
我正在使用wlgGetProcAddress
使用创建的上下文来获取函数wglCreateContext
。我已经设置了上下文wglMakeCurrent
。我得到了一个有效的函数指针glGetStringi
,但我得到NULL
了glGetString
. 我认为glGetString
并glGetStringi
在同一版本的 OpenGL (1.0) 中引入。任何想法为什么我得到这个NULL
?
万一这很重要,我有一个驱动程序版本为 13.251.0.0 的 Radeon HD 7950。
opengl - 即使使用 LoadLibrary 和 GetProcAddress,ChoosePixelFormat 也会崩溃
在单台计算机上,我的应用程序在 OpenGL 初始化期间崩溃,尤其是对 ChoosePixelFormat 的调用。我找到了这个:
C# 中的 wglCreateContext 失败但在托管 C++ 中没有
在应用程序开始时调用 GL 函数(除任何 DC 函数)根本没有帮助。所以我手动加载了opengl32.dll并获得了wglChoosePixelFormat指针。在计算机上,它工作的地方,它仍然工作,但它根本没有帮助那台特定计算机上的问题。
有任何想法吗? 作为记录,那台计算机运行的是 Win7 64。我无法访问它,但我会请那个人告诉我,它有哪个 GPU。好的,电脑是 ACER Aspire 7740 和 ATI Mobility Radeon HD 5650
c++ - wglCreateContextAttribsARB returns NULL on capable hardware
I have a program which creates an OpenGL 4.0 context on a Windows machine. On my own computer, this code works - however, on my friend's computer, it does not. wglCreateContextAttribsARB
returns NULL, even though my friend's Nvidia card supports OpenGL 4.4 and should be able to return a backwards-compatible context. Every other call does as expected.
This is the context creation code:
Another person had a similar problem and posted this question here. However, the thing that fixed the problem for them is not fixing the problem for me. I'm completely stumped.
winapi - 具有共享上下文的多个窗口
我目前有一个适用于除 Mobile Intel GM45 之外的所有视频卡的实现。不幸的是,当我尝试调用wglMakeCurrent(sDC, sRC);
所述视频卡时,它完全崩溃了。我没有对该视频卡的物理访问权限。
在我的方法中,我sRC
基于第一个sDC
.
现在,我读到“如果两个窗口都使用相同的像素格式,则为两个窗口使用 1 个 GL 上下文”(http://www.opengl.org/wiki/Platform_specifics:_Windows#Multiple_Windows),您可以使用单个上下文和多个窗口(DC),如前所述,我的实现在所有其他视频卡上都可以正常工作。
我知道我可以使用多个上下文并使用wglShareLists
. 我不想走这条路,因为必须重构很多关于资产加载和诸如此类的代码。
有没有办法使用单个上下文在 OpenGL 中实现多个窗口,以大大简化纹理创建。否则,我必须了解应用程序中的所有窗口,并wglShareLists
在开始加载纹理之前预先应用这些窗口,对吗?
编辑:我还尝试wglCreateContextAttribsARB
通过以下方式实现:http ://www.opengl.org/wiki/Tutorial%3a_OpenGL_3.1_The_First_Triangle_%28C%2B%2B/Win%29但是,驱动程序在调用本身时崩溃。
windows - WGL 的潜在滥用,glDrawArrays 中的崩溃
下面的代码创建一个窗口,使用 wglGetProcAddress 加载一些 OpenGL 进程,然后在绿色背景的中心绘制一个红色方块。在我的机器上,程序运行良好,但在朋友的笔记本电脑上,它在调用 xglDrawArrays() 时崩溃,并抱怨该函数试图取消引用 0x00000000。请注意,我朋友的机器上的 xglDrawArrays 指针本身是非空的,正如我在调试器中验证的那样。让我再次强调,错误不是由于 xglDrawArrays 为 NULL,而是由于 xglDrawArrays 在内部访问 NULL 数据。
现在,最奇怪的是,当我在他的机器上将“xglDrawArrays”更改为“glDrawArrays”时,代码突然起作用了。这使我怀疑该错误是由于对 WGL 的某些滥用造成的。
相关的顶点和片段着色器非常简单:
相关代码在这里:
最后,我使用的 glext.h 文件是这个:glxext.h
windows - Windows 上的 OpenGL 1.0 和 1.1 函数指针
我对 Windows 上 OpenGL 1.0 和 1.1 函数指针的性质有点困惑。我想我已经记下来了,但我不是 100% 确定,所以我希望有人能够确认或评论我目前的理解:
我目前的理解是,您应该使用 加载 1.2+ 函数wglGetProcAddress()
,但必须使用 加载 1.0 和 1.1GetProcAddress()
函数opengl32.dll
。然而,引起我注意的是,它可能会根据当前的上下文wglGetProcAddress()
返回不同的函数指针。HGLRC
然而,大概 1.0 和 1.1 的指针GetProcAddress()
总是相同的。这种行为上的差异感觉很不寻常。
所以,假设我有多个HGLRC
对象,我们将它们称为A
and B
。我调用wglGetProcAddress()
并将结果保存在单独的指针池中,一个A
用于B
. A
然而,我还必须将 1.0 和 1.1 函数加载到这些指针池中,在这种情况下,和的指针似乎B
总是相同的。
令我惊讶的是 1.0 和 1.1 函数因此必须是瘦包装器,它将 OpenGL 调用重定向到与当前HGLRC
. 然而,如果 Windows 上已经存在这样的重定向机制,那么我想知道为什么wglGetProcAddress()
不能也使用它,因为这样做会减轻它返回依赖于上下文的指针的危险。我什至不一定需要知道这个问题的答案,但这个问题的存在让我怀疑我是否一开始就理解正确。
c - wglCreateContextAttribsARB() gives me 4.4 when I ask for 2.0
On my machine when I call wglCreateContextAttribsARB()
asking for a 2.0 context, I get back 2.1.2.
That seems seems close enough to correct, so it doesn't worry me. Yet, the same exact code when called on a friend's machine gives a 4.4 context. Does that make sense, or should I be looking for a bug somewhere? The code is given below. GKGLLoader
and GKGLContext
modules are ones that I wrote myself, and you'll probably be able to figure out how they work just by looking at their usage, so I won't post their source files (unless someone thinks it might be relevant).
c++ - 使用 GLEW 和 WGL 的 OpenGL 抗锯齿
我对 OpenGL 比较陌生,我想在我的 C++ Win32 项目中添加抗锯齿功能。我目前在收到 WM_CREATE 消息时在窗口过程中获取设备上下文,然后使用像素格式描述符创建 OpenGL 上下文,如下所示:
为了让抗锯齿功能发挥作用,我知道我需要使用 WGL_ARB_multisample 之类的扩展。似乎很少有如何实际使用它的例子,尤其是在 GLEW 中。我将如何修改我的代码以使其正常工作?谢谢。
opengl - [ARB/]WGL 错误的 GetLastError
似乎某些特定于 API 的调用设置了返回的错误GetLastError()
。例如,wglCreateContextAttribsARB(...)
可以返回(来自规范的信息):
然而,在调试时,我得到了不同的结果。例如,尝试使用wglCreateContextAttribsARB(...)
设置 GL 4.5 上下文(我的 GPU 不支持)会导致错误值为0xC0072095
. 低 16 位匹配无效版本错误(这是有道理的,因为这是一个版本问题),但高 16 位对我来说没有意义。
我浏览了 GetLastError 文档,其中说应该为应用程序错误代码设置第 29 位。但是,我找不到任何理由说明为什么要设置其他位,并且无论如何这与 ARB 规范相冲突,即返回某某值。
这是怎么回事?
opengl - GLEW 未检测到 OpenGL 扩展?
我正在使用“ DirectStateAccess ”功能编写一些模块。如果不支持,我做了必要的东西。
在客户笔记本电脑上,我能够创建 OpenGL 3.3 Core Profile 上下文。在第一次调用时glGetString(GL_EXTENSIONS)
,GL_EXT_direct_state_access
可用。
但是,GLEW_EXT_direct_state_access 变量绝对等于 false。但是,随后的调用wglGetProcAddress("glTextureParameteriEXT")
返回一个非空值。这些功能glTextureParameterxx()
似乎也可用......
在这一点上,我想知道我是否可以依靠 GLEW 变量来检查是否确实支持扩展。
哦,顺便说一句,我用“激活了有效的 OpenGL 上下文”进行了测试......