Я передаю vec4 к шейдерам с АБВ и значение цвета, и я попытался побитовое смещение компонент цвета для своих Rg и б поплавков, но имеющие вопросы:Цвет побитового сдвига в OpenGL шейдеров GLSL
Vertex шейдеров:
#version 150
in vec4 position;
out vec2 Texcoord;
uniform mat4 model;
uniform mat4 view;
uniform mat4 proj;
void main()
{
Texcoord = vec2(position.w, position.w);
gl_Position = proj * view * model * vec4(position.xyz, 1.0);
}
Фрагмент шейдеры:
#version 150
in vec2 Texcoord;
out vec4 outColor;
uniform sampler2D tex;
void main()
{
float data = Texcoord.r;
float r = (data>> 16) & 0xff;
float g = (data>> 8) & 0xff;
float b = data & 0xff;
outColor = vec4(r, g, b, 1.0);
}
Ошибка:
Error compiling shader:
0(11) : error C1021: operands to ">>" must be integral
0(12) : error C1021: operands to ">>" must be integral
0(13) : error C1021: operands to "&" must be integral
Любые идеи, что я делаю неправильно?
Там нет оператора сдвига с плавающей точкой типа данных (по крайней мере, не в языке, который я знаю). См. [Это сообщение] (http://stackoverflow.com/questions/9315539/left-shift-float-type) для объяснения – BDL
Вместо этого вы можете вместо этого ввести команду pack –
Я не могу придумать, по какой причине чтобы бит сдвигал значение с плавающей запятой, не могли бы вы точно определить, что вы пытаетесь сделать? –