在没有光照或着色器的情况下在OpenGL渲染期间改变颜色

时间:2013-05-09 18:49:18

标签: opengl

我需要使用现有纹理渲染对象,我需要在渲染过程中改变颜色。 (例如将红色通道乘以0.5。)现有纹理不是单色的。我需要在没有启用照明和没有着色器的情况下执行此操作,因此我不会打扰我正在使用的应用程序。我无法在渲染中尽早工作,我可以直接读/写缓冲区。

实际上,我想要在正常渲染过程中使用某种颜色变换矩阵或滤镜。

2 个答案:

答案 0 :(得分:1)

基于有限的信息,我会假设一些事情。

我假设您正在使用固定管道。 我假设您没有使用像glBitmap或glDrawPixels这样的低级像素函数。如果你是你不应该。

要解决您的问题,请尝试以下方法: 使用glBegin,glEnd,glVertex2f,glTexCoord2f绘制纹理四边形 要改变颜色,请在glBegin之后和任何其他绘制指令之前使用glColor。 您应该在cpu中执行颜色转换矩阵,并将该结果与glColor一起使用。

图像将相应地混合。 WHITE不会更改图像颜色。 确保未启用GL_LIGHTING。

答案 1 :(得分:0)

OpenGL有一个颜色转换矩阵(GL_COLOR),可以像GL_MODELVIEW或GL_PROJECTION一样进行访问和修改(你很可能需要glLoadMatrix或glMultMatrix,因为glRotate对颜色没有多大意义)。它需要扩展名GL_ARB_imaging。

相关问题