2011-06-02 99 views
7

GLSL specother sources about GLSL中,採樣器類型有3個維度可用:sampler1Dsampler2Dsampler3DnVidia GLSL不支持sampler1D?

然而,當我嘗試在Chrome中使用WebGL的(正常,而且在加那利)編譯GLSL程序,sampler2Dsampler3D被接受,但sampler1D給出了一個語法錯誤。代碼:

uniform sampler1D tex1; 

錯誤:

FS ERROR: ERROR: 0:9: 'sampler1D' : syntax error 

即使我給金絲雀命令行參數--use-gl=desktop出現此錯誤。

我正在運行Chrome 12.0.742.68 beta-m和Canary 13.0.782.1。 我擁有的芯片組是Nvidia Quadro NVS 160M。

Nvidia可能允許2維和3維紋理採樣器,但不是1D?我試圖搜索信息,但沒有發現任何東西。

回答

9

不,您的問題與「NVIDIA GLSL」無關。 WebGL基於OpenGL ES 2.0,而OpenGL ES 2.0沒有1D紋理,只有2D和3D紋理(作爲擴展),所以你將無法在WebGL中使用sampler1D。

解決方案?只需使用sampler2D高度爲1的2D紋理即可。

注意:如果您使用桌面OpenGL(OpenGL> = 2.0),您將能夠使用1D紋理和sampler1D。

+1

果然,你是對的。對於其他有興趣的人來說,GLSL ES 2.0規範在這裏:http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf這表明'sampler1D'和'sampler3D'都是關鍵字「保留供將來使用,使用它們將導致錯誤。」 – LarsH 2011-06-02 19:48:27

+1

P.S.謝謝回答。 – LarsH 2011-06-02 20:07:00

+1

二維紋理是正方形的,所以一個高度爲1的寬度也爲1.您需要2DRect紋理,與1D紋理一樣,可在桌面GL中使用,但在沒有擴展名的GLES中可用 – 2011-06-02 20:38:34