在 Android 上为片段着色器使用 3D 纹理

Use 3D Texture for Fragment shader on Android

我需要在 Android 的片段着色器中使用 3D 纹理,但出现编译错误。 我用的是GLES3.0,我觉得应该支持3D贴图。 我的着色器如下所示:

#extension GL_OES_texture_3D : enable

precision mediump float;

uniform sampler3D u_Texture;

没有#extension GL_OES_texture_3D : enable我得到错误

L0003: Keyword 'sampler3D' is reserved

使用 #extension GL_OES_texture_3D : enable,出现错误

S0032: no default precision defined for variable 'u_Texture'

即使我使用uniform medium float sampler3D u_Texture,我也得到了

Expect, found sampler3D error.

希望得到您的帮助!

非常感谢。

YL

首先,您必须在着色器程序的第一行通过版本限定符指定 glsl 版本:

#version 300 es

精度限定符可以是 highpmediumplowp,并且必须在类型之前指定。类型是 sampler3D 而不是 float.

宣言

uniform medium float sampler3D u_Texture

有 2 种类型(floatsampler3D),因此会导致语法错误。

必须

#version 300 es

uniform medium sampler3D u_Texture;

或使用默认精度限定符

#version 300 es
precision mediump sampler3D;

uniform sampler3D u_Texture;

(当然precision mediump float;也必须指定)

OpenGL ES Shading Language 3.20 Specification - 4.7.3. Precision Qualifiers