在GLSL spec和other sources about GLSL中,採樣器類型有3個維度可用:sampler1D
,sampler2D
和sampler3D
。nVidia GLSL不支持sampler1D?
然而,當我嘗試在Chrome中使用WebGL的(正常,而且在加那利)編譯GLSL程序,sampler2D
和sampler3D
被接受,但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?我試圖搜索信息,但沒有發現任何東西。
果然,你是對的。對於其他有興趣的人來說,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
P.S.謝謝回答。 – LarsH 2011-06-02 20:07:00
二維紋理是正方形的,所以一個高度爲1的寬度也爲1.您需要2DRect紋理,與1D紋理一樣,可在桌面GL中使用,但在沒有擴展名的GLES中可用 – 2011-06-02 20:38:34