graphics - nVidia GLSL 不支持 sampler1D?

标签 graphics glsl textures nvidia

GLSL spec , 和 other sources about GLSL , 采样器类型有 3 个维度:sampler1D , sampler2D , 和 sampler3D .

但是,当我尝试在 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。

关于graphics - nVidia GLSL 不支持 sampler1D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6210080/

相关文章:

c++ - 窗口老是失效怎么调试?

opengl - 简单来说,textureGrad()是什么?

c++ - 光不断覆盖旋转立方体的 2 个相同面

c - 如何在 C 中进行 GUI 编程?

java - Swing drawString : Text bounds and line wrapping

ios - iOS 上的动态 PVRTC 压缩

c++ - SFML(32 位 VS12)-SFML.exe : 0xC0000005: Access violation reading location 0x0526. LoadFromFile 中 0x701ADEF8 (msvcr110.dll) 处未处理的异常

java - 使用 Jogl 直接从 volatileImage 创建纹理

c# - 无尖点的线偏移(平行线)

opengl - 片段着色器 - 画一条线?