我需要按字节类型或整数设置颜色,而不是浮点值。
如何将此类型分配到gl_FragColor
?
将值除以256将不会给出我想要的精度。
我的主要目的是知道颜色缓冲区中每个位的具体值,如果我只用特定颜色绘制线条。
例如,我希望在像素的红色值的颜色缓冲区中只有2个lsbits将打开,我应该将哪个颜色值传输到gl_FragColor
?
如果我有一个写字节类型值的选项,我会将值3写入红色组件
感谢
答案 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);
我没有对此进行过测试,但是没有理由认为为什么假设几何体不会重叠(在这种情况下该位会溢出到下一个位置)它无法工作。