在 Opengl 中签名加法混合

Signed additive blending in Opengl

我正在尝试将一些代码从 DX9 移植到 Opengl,它使用有符号的加法混合操作

pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADDSIGNED);

有没有办法用 opengl glBlendFunc 做到这一点?

我有一些可行的方法,可以将纹理分成加法和减法纹理,并分两次绘制(加法,然后减法)。幸运的是,我可以批处理加法和减法,而不会造成太多范围裁剪(加法达到 1.0 或减法达到 0.0),因此如果我找不到可以签名的简单混合函数,这是一个可行的解决方案...

OpenGL GL_FUNC_ADD 已经可以减法了,这只是着色器输出的问题。如果您想在同一个 8 位纹理中存储负值和正值,您可能需要查看 GL_RGBA8_SNORM