在opengl es 2.0中将整数值指定为颜色

时间:2013-08-11 10:42:36

标签: opengl-es-2.0 glsl glsles

我需要按字节类型或整数设置颜色,而不是浮点值。 如何将此类型分配到gl_FragColor? 将值除以256将不会给出我想要的精度。 我的主要目的是知道颜色缓冲区中每个位的具体值,如果我只用特定颜色绘制线条。 例如,我希望在像素的红色值的颜色缓冲区中只有2个lsbits将打开,我应该将哪个颜色值传输到gl_FragColor? 如果我有一个写字节类型值的选项,我会将值3写入红色组件 感谢

1 个答案:

答案 0 :(得分:2)

据我所知,gl_FragColor必须始终是浮点数。但是,如果您知道每个通道的颜色缓冲区为8位,则不应该强制要求任何内容。你可以考虑

gl_FragColor = vec4(floor(number)/255.0, 0, 0, 0);
例如,

。最新版本的GLSL支持按位运算,但我怀疑GLES2是否支持。

如果你想绘制特定的位,也许......

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);

...

gl_FragColor = vec4(pow(2.0, bitIndex)/255.0, 0, 0, 0);

我没有对此进行过测试,但是没有理由认为为什么假设几何体不会重叠(在这种情况下该位会溢出到下一个位置)它无法工作。