0

我需要按字节类型或整数设置颜色,而不是浮点值。我怎样才能将这种类型分配到gl_FragColor?将该值除以 256 不会给我想要的精度。我的主要目的是知道颜色缓冲区中每个位的具体值,如果我只用特定的颜色画线。例如,我希望在像素的红色值的颜色缓冲区中只有 2 lsbits 将打开,我应该转移到什么颜色值gl_FragColor?如果我可以选择写入字节类型值,我会将值 3 写入红色组件谢谢

4

1 回答 1

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);

我没有对此进行测试,但没有理由假设几何形状从不重叠(在这种情况下,该位会溢出到下一个)。

于 2013-08-15T14:18:02.813 回答