OpenGL 无法在 Windows 8 上渲染
Posted
技术标签:
【中文标题】OpenGL 无法在 Windows 8 上渲染【英文标题】:OpenGL fails to render on windows 8 【发布时间】:2013-01-03 23:27:50 【问题描述】:我遇到了一个问题,即在 Windows 8 上通过 VS 2012 运行简单的 OpenGL 应用程序时没有呈现任何内容。
我有一个小调试渲染器,用于制作一些项目的原型,并使用 VS 2012 Express Edition 在 Windows 7 上启动和运行。
我升级到 Windows 8,并在我的工作中克隆了 git 存储库。安装最新的驱动程序并安装 VS 2012 后,我运行了我的应用程序,但没有显示任何内容,我得到的只是屏幕清晰的颜色。我之前遇到过异常,但那是因为我没有正确的驱动程序,所以在调用 glGetIntegerv(GL_MAJOR_VERSION,...) 时我会得到 -1,因为 OpenGL 设置不正确。它现在已正确初始化,并且在逐步执行时,看起来一切正常,唯一的问题是我什么也没看到。
为了确保这不仅仅是我的代码,我下载了一些 Swiftless OpenGL 示例并得到了完全相同的东西。我的应用程序使用的是 OpenGL 3.2,并且没有弃用的功能。我的硬件最高可以支持 3.3,如果有任何用处,我正在 Macbook air 上通过 Boot Camp 运行 Window 8。
在过去的几天里,我一直在用头撞墙试图解决这个问题,但我运气不佳,我想我会把它扔在那里看看是否有人遇到过类似的问题,如果有人能提供任何信息,我将不胜感激。如果使用 Windows 8 的人可以通过 VS 下载并构建一个简单的 OpenGL 应用程序,只是为了看看他们是否可以在屏幕上显示一些有趣的东西!
【问题讨论】:
这几乎肯定是显卡驱动问题,可能不属于 SO。 【参考方案1】:您是否使用过时且已弃用的良好固定功能管道,即像glBegin()
、glVertex*()
和glEnd()
这样的即时模式绘制调用?如果是这样,请尝试使用顶点数组绘制你的东西。即使这对您的特定情况没有帮助,也应不惜一切代价避免立即模式绘制调用,以使代码向前兼容。 OpenGL 3.x 核心配置文件不再包含这些旧的 API 函数。由于一些陈旧的即时模式绘制调用 (FTGL),我的新 Win 7 笔记本 (OpenGL 3.3) 上也出现了空白屏幕。
编辑:
对于独立的GL调试,我推荐这个:
http://www.gremedy.com/
此程序允许您暂停执行并调查缓冲区内容、着色器程序等。
【讨论】:
我没有使用任何已弃用的功能,所有与 OpenGL 相关的都是 3.0 或更高版本。我没有使用 VBO,但我的所有绘图都使用顶点数组。也许我可以尝试使用 VBO,这可能会导致问题,但它仍然无法解释为什么它在 Windows 7 而不是 8 上运行良好,并且顶点数组应该仍然可以正常工作,无论如何你都会希望。跨度> 客户端顶点数组不应该是问题的原因。着色器呢?在所有的drawcalls期间你有一个程序绑定吗? 没错是的,我创建一个2.1上下文,初始化glew,然后如果可用,我使用wglCreateContextAttribsARB创建一个新的3.0上下文,并删除之前的上下文。尽管切换不能正确发生,但沿线某处。再次奇怪的是为什么这只发生在不同的配置上(Windows 8?不知何故?),但希望我能把它弄明白,当我让它工作时,我会让你知道修复是什么!再次感谢伙计,我欠你一杯啤酒! :) 嘿伙计,快速更新一下。我花了一段时间修复 gDebugger 中显示的调试错误消息,并通过使用 wglGetProcAddress("..") 重新定义 glew 函数来修复它们之后我仍然遇到同样的问题,没有渲染:(我做了更多挖掘,并决定尝试将我的代码移到使用 VBO 而不是客户端顶点数组(以防万一),并且低并且看哪,修复了它!我不确定为什么客户端的东西不再起作用,它可能是图形驱动程序/Windows 8 的东西,不确定,但它们似乎不再工作。 accepted anwsers 和相关的cmets 和显而易见的价值数十分钟的研究、思考和写作怎么可能还有“0”分? :) 现在是一个奇怪的地方。【参考方案2】:安装最新驱动后
>
您从哪里获得驱动程序?只有您直接从 GPU 供应商网站下载的驱动程序才提供适当的 OpenGL 支持。 Windows 自动安装的驱动程序对 OpenGL 的支持很差。
【讨论】:
我从 NVidia 的网站下载了最新的驱动程序。我的机器里有一个 9400M,我得到的驱动程序是 310.70。这太奇怪了,似乎一切都应该工作,但没有显示,我想知道这是否是 Windows 8 特有的问题。我没有在具有相同配置的 Windows 7 上发布。【参考方案3】:opengl 支持不适用于 windows 8。它们仍然是在 windows 上使用它的技术,最好在 google 上搜索因为我尝试过我的世界游戏 or u can check here too
【讨论】:
答案中的链接已失效 - “错误 403 - 此 Web 应用已停止”以上是关于OpenGL 无法在 Windows 8 上渲染的主要内容,如果未能解决你的问题,请参考以下文章