在 GLSL spec , 和 other sources about GLSL , 采样器类型有 3 个维度:sampler1D
, sampler2D
, 和 sampler3D
.
但是,当我尝试在 Chrome 中使用 WebGL 编译 GLSL 程序时(常规的和 Canary 中的),sampler2D
和 sampler3D
被接受,但 sampler1D 给出了语法错误。代码:
uniform sampler1D tex1;
错误:
FS ERROR: ERROR: 0:9: 'sampler1D' : syntax error
即使我给 Canary 提供命令行参数
--use-gl=desktop
也会发生此错误.我正在运行 Chrome 12.0.742.68 beta-m 和 Canary 13.0.782.1。
我的芯片组是 Nvidia Quadro NVS 160M。
Nvidia 是否有可能允许 2 维和 3 维纹理采样器,但不允许 1D?我已经尝试搜索相关信息,但没有找到任何信息。
最佳答案
不,您的问题与“NVIDIA GLSL”无关。 WebGL 基于 OpenGL ES 2.0,而 OpenGL ES 2.0 没有 1D 纹理,只有 2D 和 3D 纹理(作为扩展),因此您将无法在 WebGL 中使用 sampler1D。
解决方案?只需将高度为 1 的 2D 纹理与 sampler2D 一起使用。
注意:如果您使用桌面 OpenGL (OpenGL >= 2.0),您将能够使用 1D 纹理和 sampler1D。
关于graphics - nVidia GLSL 不支持 sampler1D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6210080/