我有以下GLSL着色器(加载到OpenGL 3.3前向上下文中,但在2.1中获得相同的行为):
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);"
"}"
};
为了定位问题,这里进行了大量简化。
如图所示,它已经编译、链接并显示了几何图形。
如果取消注释,它会编译和链接但没有警告,但什么都不渲染(glClear
仍然有效,但不是 glDrawArrays
)。
需要什么来使 gl_VertexID
正常工作?
该应用程序是在 Windows 7 64 位上运行的 32 位 C++ 程序。视频卡是 ATI Mobility Radeon 5650,Catalyst 8.812。
gl_VertexID
无法工作,读取它实际上会破坏其他所有内容(尽管以有用的方式使用它是下一步)。但很高兴知道其他人之前已经走过这条路。 - Ben Voigt