2011-02-28 34 views
3

我有以下GLSL着色器(被加載到一個OpenGL 3.3前鋒方面,但我得到了相同的行爲2.1):gl_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);" 
    "}" 
}; 

它以查找問題非常簡單。

如圖所示,它編譯,鏈接和我的幾何顯示。

如果註釋行被激活,它將編譯和鏈接而不發出警告,但沒有任何呈現(glClear仍然有效,但不是glDrawArrays)。

需要什麼使gl_VertexID工作?

該應用程序是在Windows 7 64位上運行的32位C++程序。 視頻卡是ATI Mobility Radeon 5650,Catalyst 8.812

回答

0

奇蹟般地,它不會再發生在Catalyst 8.821上。

我不確定這是因爲錯誤修復,還是因爲驅動程序安裝程序重置了一些奇怪的狀態。

編輯:鑑於更新的驅動程序解決了兩個單獨的計算機上的問題,看起來像它一定是一個非常新的錯誤修復。

+0

我記得大約2-3個月前在OpenGL板上看到一個關於ATI驅動生成不正確的gl_VertexID和非零_first_參數的線程,所以我打賭會是「bug修復」。 – Damon 2011-02-28 23:58:26

+0

只要確定該問題也出現在另一臺電腦上,Radeon 5770 Catalyst 8.791。現在升級,如果新版本在這裏修復它,我會相信。 – 2011-03-01 00:53:16

+0

近一年前我看到了同樣的行爲。在一個簡單的情況下,gl_VertexID不起作用。當我讓着色器做更多的工作時,它奇蹟般地工作。它看起來像ATI仍然有一些問題... – kvark 2011-03-01 02:12:49