GLSL specother sources about GLSL 中,采样器类型有 3 个维度: sampler1Dsampler2Dsampler3D

但是,当我尝试在 Chrome 中使用 WebGL 编译 GLSL 程序(包括常规的和 Canary 中的)时,sampler2Dsampler3D 被接受,但 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。

10-07 17:31