Tom*_*sso 4 shader qt opengl-es glsles
我正在编写一个 Qt OpenGL 应用程序,刚刚从 GLSL 开始,并尝试编译一个我在网络上的示例中找到的“简单”片段着色器:
#version 320 es
out vec4 fColor;
void main()
{
fColor = vec4 (0.0, 0.0, 1.0, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
但是当尝试从源添加此着色器时,我从 Qt 收到此错误消息addShaderFromSourceFile():
QOpenGLShader::compile(Fragment):
0:3(12): 警告:GL_ARB_fragment_coord_conventions片段着色器中不支持扩展
0:1(1): 错误: 在此范围内没有为类型指定精度vec4
声明 type 精度的正确语法是什么vec4?
我似乎找不到如何做到这一点的示例vec4,并尝试这样的事情:
precision mediump vec4;
Run Code Online (Sandbox Code Playgroud)
...导致语法错误。
请注意,我希望着色器在嵌入式系统上运行,因此#version 320 es开头有“”行。
vec4不是默认精度限定符的有效类型。
默认精度限定符中的类型必须是int,float或任何不透明类型(例如采样器是不透明类型)。
精度声明
precision mediump float;
Run Code Online (Sandbox Code Playgroud)
影响所有浮点数(例如float, vec2, vec3, vec4, mat3, ...)
精度限定符也可以设置为单个变量:
out mediump vec4 fColor;
Run Code Online (Sandbox Code Playgroud)
这将覆盖默认的精度限定符。
有关详细信息,请参阅OpenGL ES 着色语言 3.20 规范 - 4.7。精度和精度限定符。
| 归档时间: |
|
| 查看次数: |
6780 次 |
| 最近记录: |