Windows gl_VertexID中断渲染

Windows gl_VertexID中断渲染,windows,opengl,glsl,Windows,Opengl,Glsl,我有以下GLSL着色器(加载到OpenGL 3.3正向上下文中,但在2.1中得到相同的行为): 为了定位问题,它被简化了很多 如图所示,它编译、链接并显示“我的几何体” 如果激活了注释行,则编译和链接时不会出现警告,但不会呈现任何内容(glClear仍然有效,但不会glDrawArrays) 需要什么才能使gl\u VertexID工作 应用程序是在Windows 7 64位上运行的32位C++程序。 视频卡是ATI Mobility Radeon 5650,Catalyst 8.812,奇迹般

我有以下GLSL着色器(加载到OpenGL 3.3正向上下文中,但在2.1中得到相同的行为):

为了定位问题,它被简化了很多

如图所示,它编译、链接并显示“我的几何体”

如果激活了注释行,则编译和链接时不会出现警告,但不会呈现任何内容(
glClear
仍然有效,但不会
glDrawArrays

需要什么才能使
gl\u VertexID
工作

应用程序是在Windows 7 64位上运行的32位C++程序。


视频卡是ATI Mobility Radeon 5650,Catalyst 8.812,奇迹般地,Catalyst 8.821不再出现这种情况

我不确定这是因为bug修复,还是因为驱动程序安装程序重置了一些奇怪的状态


编辑:鉴于更新的驱动程序修复了两台不同计算机上的问题,看起来这一定是最近的错误修复。

我记得大约2-3个月前在OpenGL板上看到一条关于ATI驱动程序生成错误的gl_VertexID(第一个参数非零),所以我打赌是“错误修复”.刚刚确定问题也发生在另一台计算机上,Radeon 5770 Catalyst 8.791。现在升级,如果新版本也能在这里修复的话,我会被说服的。我在将近一年前看到过同样的行为。在一个简单的例子中,gl_VertexID不起作用。当我让着色器做更多的工作时,它奇迹般地工作了。看起来ATI仍然有一些问题…@kvark:在我的例子中,甚至不是
gl\u VertexID
不起作用,阅读它实际上破坏了其他一切(尽管下一步是以一种有用的方式使用它)。但很高兴知道其他人以前也曾涉足过这一领域。不,我所经历的与描述的完全相同——如果我尝试读取此值,则不会绘制任何图形。
const GLchar* const glsl_vertex_timeseries = {
    "#version 330\n"
    "#extension GL_EXT_gpu_shader4 : enable\n"
    ""
    "in vec2 in_Y;"
    ""
    "void main()"
    "{"
//  "   int dummy = gl_VertexID;"
    "   gl_Position = vec4(in_Y, 0.0, 1.0);"
    "}"
};