使用OpenGL进行纹理颜色操作(使用LWJGL和Java)
我是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、R、G)
或者将这些值和新值用于算术运算
(R+G*R,(B+G)/5,B*0.2)
我的目的是制作一个灰度纹理,用
color = (R*0.5 + G*0.5 + B*0.5)/3
functionThatChangesColor(color, color, color);
我怎样才能做到这一点呢
谢谢
# 1 楼答案
使用实现组件旋转的着色器。使用更高版本的OpenGL,还可以将纹理的组件旋转设置为纹理参数。见http://www.opengl.org/wiki/Texture#Swizzle_mask