OpenGL无法在Windows 8上渲染

3

我遇到一个问题,在Windows 8上通过VS 2012运行简单的OpenGL应用程序时,什么也没有被渲染出来。

我有一个小的调试渲染器,用于原型制作一些项目,并在Windows 7上使用VS 2012 Express Edition运行。

我升级到了Windows 8,并克隆了带有我的工作的git存储库。安装了最新的驱动程序和VS 2012后,我运行我的应用程序,但是没有显示任何内容,所有我得到的就是屏幕清空颜色。之前我遇到了一个异常,但那是因为我没有正确的驱动程序,所以当调用glGetIntegerv(GL_MAJOR_VERSION,...)时,由于OpenGL没有正确设置,我会得到-1。现在它已正确初始化,而且在步进时,一切看起来都很正常,唯一的问题是我看不到任何东西。

为了确保这不仅仅是我的代码问题,我下载了一些Swiftless OpenGL示例,并得到了完全相同的结果。我的应用程序使用的是OpenGL 3.2,没有过时的功能。我的硬件可以支持高达3.3的版本,如果有用的话,我是通过Macbook air上的Boot Camp运行Window 8。

我已经砸了几天头,试图解决这个问题,但是我没有太多的运气。我想看看是否有人遇到了类似的问题,如果有人能提供任何信息,我将不胜感激。如果某个使用Windows 8的人可以下载并构建一个简单的OpenGL应用程序,只需查看他们是否能在屏幕上得到些什么,那将是很有趣的!


2
这几乎肯定是一个图形驱动程序问题,可能并不适合在SO上讨论。 - Ian Atkin
3个回答

2
你是否使用旧的、已经废弃的固定功能管线,即立即模式绘制调用,例如 glBegin()glVertex*()glEnd()?如果是这样,请尝试使用顶点数组来绘制你的图形。即使在你特定的情况下这并没有帮助,立即模式绘制调用也应该尽可能地避免,以使代码具备向前兼容性。OpenGL 3.x 核心配置文件不再包含这些旧的 API 函数。我在我的新 Win 7 笔记本电脑上(OpenGL 3.3)也因为一些陈旧的立即模式绘制调用(FTGL)而出现了空白屏幕。

编辑:

对于独立的 GL 调试,我推荐使用这个:

http://www.gremedy.com/

这个程序允许你暂停执行并调查缓冲区内容、着色器程序等等。


客户端顶点数组不应该是问题的原因。着色器呢?在所有绘制调用期间,您是否绑定了程序? - Sam
等一下,我想我知道是什么了,刚刚使用了gDebugger工具,看起来似乎由于某种原因,openGL调用是从另一个渲染上下文中进行的。我看到这个调试错误被打印出来:检测到错误:调试进程从一个渲染上下文中请求扩展函数指针(glEnableVertexAttribArray),但在另一个渲染上下文(上下文#2)中调用了该函数指针。那就是它了,非常感谢您提供的调试工具链接,帮了大忙!谢谢! :) - Tom
1
没错,我创建了一个2.1上下文,初始化glew,然后如果可用的话,使用wglCreateContextAttribsARB创建一个新的3.0上下文,并删除先前的上下文。不过在某个地方,这个切换可能没有正确发生。再次奇怪的是为什么只会在不同的配置(Windows 8?)上出现这种情况,但希望我能够解决它,我会让你知道修复方法的!再次感谢,我欠你一杯啤酒! :) - Tom
1
嘿,伙计,这里有个快速的更新。我花了一段时间修复了在gDebugger中出现的调试错误消息,通过重新定义使用wglGetProcAddress("..")的glew函数来修复它们后,我仍然遇到了同样的问题,没有任何渲染 :( 我进行了更多的挖掘,并决定尝试将我的代码转移到使用VBO而不是客户端顶点数组(以防万一),神奇的是,它解决了问题!我不确定为什么客户端侧的东西不再起作用,可能是一个图形驱动器/Windows 8的问题,不确定,但它们似乎已经不再工作了。 - Tom
1
如何才能让带有相关评论且显然值得花费数十分钟的研究、思考和撰写的“已采纳”答案仍然得分为“0”? :) 现在的SO是一个奇怪的地方。 - mlvljr
显示剩余7条评论

1
安装最新的驱动程序之后,您从哪里获取了这些驱动程序?只有您直接从GPU供应商的网站下载的驱动程序才具有适当的OpenGL支持。Windows自动安装的驱动程序仅具有较差的OpenGL支持。

我从NVidia的网站下载了最新的驱动程序。我的机器上有一个9400M,我得到的驱动程序是310.70。很奇怪,因为似乎一切都应该正常工作,但什么也没有显示出来,我想这可能是Windows 8特有的问题。在相同配置下的Windows 7上我没有遇到任何问题。 - Tom

-1

Windows 8不支持OpenGL,但仍有一些技巧可以在Windows上使用它。最好在Google上搜索,因为我已经尝试过对Minecraft游戏进行了或者您也可以在这里查看


链接无效 - “错误403-此Web应用已停止” - Pang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接