나는 다음과 GLSL 쉐이더가 한 렌더링 휴식 gl_VertexID (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
OpenGL 보드에서 2-3 개월 전 ATI 드라이버가 0이 아닌 _first_ 매개 변수를 사용하여 잘못된 gl_VertexID를 생성하는 것에 대한 글을 기억합니다. 따라서 내기가 "버그 수정"이 될 것입니다. – Damon
이 문제는 다른 컴퓨터 Radeon 5770 Catalyst 8.791에서도 발생합니다. 지금 업그레이드를하면 새 버전이 여기에도 수정되면 확신 할 수 있습니다. –
거의 1 년 전 같은 행동을 보았습니다. 간단한 경우 gl_VertexID가 작동하지 않습니다. 셰이더가 더 많은 작업을 할 때, 그것은 기적적으로 작동했습니다. 그것은 ATI가 여전히 몇 가지 문제가있는 것처럼 보입니다 ... – kvark