我遇到的问题是,在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上运行Window 8到Boot Camp。
过去几天我一直在靠墙试图解决这个问题,但我没有太多运气,我以为我会把它扔出去看看是否有人遇到过类似的问题,如果有人能提供任何信息,我将非常感激。如果有Windows 8的人可以通过VS下载并构建一个简单的OpenGL应用程序,只是为了看看他们是否可以在屏幕上获得一些有趣的内容!
答案 0 :(得分:2)
您是否使用了旧的和已弃用的固定功能管道,即立即模式绘制调用,如glBegin()
,glVertex*()
和glEnd()
?如果是这样,尝试使用顶点数组绘制您的东西。即使这对您的具体情况没有帮助,也应该不惜一切代价避免立即模式绘制调用,以使代码向前兼容。 OpenGL 3.x核心配置文件不再包含这些旧的API函数。由于一些陈旧的即时模式绘制调用(FTGL),我的新Win 7笔记本(OpenGL 3.3)上还有一个空白屏幕。
编辑:
对于独立的GL调试,我建议这样做:
该程序允许您暂停执行并调查缓冲区内容,着色器程序等。
答案 1 :(得分:1)
安装最新驱动程序后
你从哪里得到司机?只有您直接从GPU供应商网站下载的驱动程序才能提供适当的OpenGL支持。 Windows自动安装的驱动程序只支持较差的OpenGL。
答案 2 :(得分:-1)