基本上,我有一个这样定义的颜色矩阵:
struct ColourXForm
{
float4 mul;
float4 add;
float4 Transform(float4 colour)
{
return float4(
colour.x * mul.x + add.x,
colour.y * mul.y + add.y,
colour.z * mul.z + add.z,
colour.w * mul.w + add.w);
}
}
我想要做的是将函数“变换”应用于纹理中的每个像素,因为它被渲染到屏幕上。我实际上无法修改纹理,因为不同的颜色变换矩阵可以在一帧中多次应用于同一图像(我不知道在渲染纹理之前会应用什么),我可以'也不使用着色器。
考虑到这些要求,有没有办法做到这一点?(到目前为止,我唯一的想法是多纹理,但不知道如何应用它)
另外,我是 OpenGL 的新手,所以发布一些代码也会很有帮助,或者指向我的教程甚至是所需的函数/参数。
谢谢
编辑:我应该提到的另一件事是纹理包含预乘的 alpha,因此混合设置为glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);