mod function returns highp 在 OpenGL 3.3 内核中浮动吗?
Does mod function returns highp float in OpenGL 3.3 core?
我试图理解为什么以下代码会在几何着色器中生成以下错误:
#version 330 core
layout (points) in;
layout (line_strip, max_vertices = 256) out;
in int gs_timestampLabel[];
...
int numberChar[10];
int number = gs_timestampLabel[0];
numberChar[digit] = mod(number, 10);
...
我也试过:
numberChar[digit] = number - 10 * floor(number/10); // number % 10
错误:
Error compiling shader: shaders/TimestampLabels.geometry_2.glsl
Shader log: ERROR: 0:774: 'assign' : cannot convert from 'highp float' to 'highp int'
mod 总是 return 浮动吗?要使用整数正确完成此 modulus 运算,应该怎么做?
GLSL 中的 mod
函数始终是浮点数 mod
。 GLSL 3.30 可以将整数隐式转换为浮点数,但不会将浮点数隐式转换为整数。因此错误。
如果您想要一个整数 mod,请执行您在 C++ 中执行的操作:使用 %
.
我试图理解为什么以下代码会在几何着色器中生成以下错误:
#version 330 core
layout (points) in;
layout (line_strip, max_vertices = 256) out;
in int gs_timestampLabel[];
...
int numberChar[10];
int number = gs_timestampLabel[0];
numberChar[digit] = mod(number, 10);
...
我也试过:
numberChar[digit] = number - 10 * floor(number/10); // number % 10
错误:
Error compiling shader: shaders/TimestampLabels.geometry_2.glsl
Shader log: ERROR: 0:774: 'assign' : cannot convert from 'highp float' to 'highp int'
mod 总是 return 浮动吗?要使用整数正确完成此 modulus 运算,应该怎么做?
GLSL 中的 mod
函数始终是浮点数 mod
。 GLSL 3.30 可以将整数隐式转换为浮点数,但不会将浮点数隐式转换为整数。因此错误。
如果您想要一个整数 mod,请执行您在 C++ 中执行的操作:使用 %
.