0

我需要使用现有纹理渲染对象,并且需要在渲染过程中更改颜色。(如将红色通道乘以 0.5。)现有纹理不是单色的。我需要在不启用照明和着色器的情况下执行此操作,这样我就不会干扰我正在使用的应用程序。我不能在渲染中足够早地工作,我可以直接读/写缓冲区。

实际上,我想要在正常渲染期间工作的某种颜色转换矩阵或过滤器。

4

2 回答 2

1

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

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

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

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

于 2013-05-09T21:06:51.037 回答
0

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

于 2013-05-09T21:30:49.303 回答