2011-02-28 1 views
3

나는 다음과 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

답변

0

기적적으로 더 이상 Catalyst 8.821에서는 발생하지 않습니다.

버그 수정 때문인지 또는 드라이버 설치 프로그램이 이상한 상태로 재설정했기 때문에 확실하지 않습니다.

EDIT : 업데이트 된 드라이버가 두 대의 컴퓨터에서 문제를 해결했음을 감안할 때 매우 최근의 버그 수정 일 것 같네요.

+0

OpenGL 보드에서 2-3 개월 전 ATI 드라이버가 0이 아닌 _first_ 매개 변수를 사용하여 잘못된 gl_VertexID를 생성하는 것에 대한 글을 기억합니다. 따라서 내기가 "버그 수정"이 될 것입니다. – Damon

+0

이 문제는 다른 컴퓨터 Radeon 5770 Catalyst 8.791에서도 발생합니다. 지금 업그레이드를하면 새 버전이 여기에도 수정되면 확신 할 수 있습니다. –

+0

거의 1 년 전 같은 행동을 보았습니다. 간단한 경우 gl_VertexID가 작동하지 않습니다. 셰이더가 더 많은 작업을 할 때, 그것은 기적적으로 작동했습니다. 그것은 ATI가 여전히 몇 가지 문제가있는 것처럼 보입니다 ... – kvark