我是 OpenGL 的新手。我将 Java 与 LWJGL 和 Slick 一起使用。到目前为止,我可以绘制多个纹理,并且可以使用缓冲区将屏幕上显示的图像复制到纹理以进行后处理。使用 glColor3f() 我可以使屏幕具有所需的颜色(仅蓝色,仅红色,仅显示蓝色和绿色通道等)。
但是 glColor3f(r, g, b) 所做的只是将 r, g, b 的值乘以当前像素。如果 R、G、B 是像素的当前值,则 glColor 对所有像素所做的是 (R*r, G*g, B*b)。
我想要做的是使用当前值 R、G、B,例如,我可以将红色通道换成蓝色通道:
(B, RG)
或者将这些值和新值用于算术运算
(R+G*r, (B+g)/5, B*0.2)
我的目的是制作灰度纹理,改变所有像素颜色(R,G,B)
color = (R*0.5 + G*0.5 + B*0.5)/3
functionThatChangesColor(color, color, color);
我怎样才能做到这一点或类似的东西?
谢谢!