我尝试将一些代码从DX9移植到Opengl,并使用带符号的添加剂混合操作
pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADDSIGNED);
有没有办法用opengl glBlendFunc做到这一点?
通过将纹理分割为加法和减法纹理,并将它们绘制成2遍(加法,然后减去),我有一些可行的方法。幸运的是,我可以批量添加和减去没有太多的范围裁剪(添加命中1.0或减去0.0),所以如果我找不到一个可以签名的简单混合函数,它是一个可行的解决方案......
答案 0 :(得分:1)
OpenGL GL_FUNC_ADD
已经可以减去,它只是着色器输出的问题。如果要在同一个8位纹理中存储负值和正值,可能需要查看GL_RGBA8_SNORM
。