【发布时间】:2012-11-30 00:45:57
【问题描述】:
所以,我收集了一些我在 openGL 中制作的对象。它们每个都有自己的颜色,其中一些还应用了纹理。我想要做的是阻止某些颜色到达屏幕,但仍然能够改变它。有没有办法挑选出实际涂上的颜色?
我尝试在相机前放置一个半透明平面,但它并不能阻止其他颜色通过 - 相反,它只是与它们混合。
理想情况下,它是这样工作的:
红色物体+红色屏幕=红色物体
蓝色物体 + 红色屏幕 = 灰色/黑色/白色物体
紫色物体+红色屏幕=红色物体
-编辑-
为了澄清我想要做的事情:我想让所有对象的 RGB 值保持不变。不过,在将它们绘制到屏幕上之前,我想在不对对象进行任何实际更改的情况下将某些颜色值“归零”。
因此,通过红色滤镜的 RGB [255,150,200] 对象将被绘制为具有 RGB 值 [255,0,0]、绿色滤镜 [0,150,0] 和蓝色滤镜 [0, 0,200]。
【问题讨论】:
-
how it would work...的描述似乎很模糊。您能否将其表示为源和目标 RGB(A) 的函数? -
我已经用一些 RGB 值示例编辑了这个问题。希望这有助于解释我的问题。
-
这对于片段着色器来说应该是一个相当简单的任务。
-
据我所知,片段着色器正是我获取有关正在绘制的像素数据所需要的。至于实际更改我得到的东西的各个颜色值然后将它们发回?我似乎找不到任何东西。你有什么地方可以指点我吗?
标签: opengl colors filter screen