【发布时间】:2009-08-23 00:12:44
【问题描述】:
这与我上次的question 有关。要获取此图像:
http://img252.imageshack.us/img252/623/picture8z.png
我画了一个白色背景(颜色 =
(1, 1, 1, 1))。我用颜色=
(1, 0, 0, .8)和混合函数(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)渲染左上角的两个方块,然后用颜色=(1, 1, 1, 1)和混合函数(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)绘制纹理。我用颜色 =
(1, 0, 0, .8)和混合函数(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)绘制右下角。
根据我的计算,渲染到纹理的方块应该有颜色
.8 * (1, 0, 0, .8) + (1 - .8) * (0, 0, 0, 0) = (.8, 0, 0, .64)
所以在白色背景上绘制纹理后,它们应该有颜色
(.8, 0, 0, .64) + (1 - .8) * (1, 1, 1, 1) = (1, .2, .2, .84)
右下角的方块应该有颜色
.8 * (1, 0, 0, .8) + (1 - .8) * (1, 1, 1, 1) = (1, .2, .2, .84)
应该看起来一样!我的推理错了吗?我的计算错了吗?
无论如何,我的目标是缓存我的一些场景。如何渲染到纹理,然后绘制该纹理,使其等同于仅内联绘制场景?
【问题讨论】:
标签: opengl alphablending render-to-texture