我试图在GLSL中混合两个部分重叠的纹理,并且想知道我是否误解了多纹理的概念。是否需要纹理完全重叠或者是否有两个偏移纹理仅在它们重叠的地方混合?GLSL部分重叠纹理
我具有类似于以下的(减去网格线和文本)的两个图像: Example image
理想情况下,图像的重叠部分将一起很好地混合,以使最终结果将类似于一个平滑的图像即将两者结合在一起。例如,重叠橙色像素会混合在一起或采取较高的强度。
我是GLSL的新手,一直在使用这篇文章GLSL Shader Article,它使用片段着色器来混合纹理(相当标准)。
继文章,I @ m各自纹理设置像这样:
glUseProgramObjectARB(m_hProgramObject);
GLint nParamObj = glGetUniformLocationARB(m_hProgramObject, pParamName_i);
...
glActiveTexture(GL_TEXTURE0 + nTextureID_i);
glBindTexture(GL_TEXTURE_2D, nTextureID_i);
glUniform1iARB(nParamObj, nTextureID_i);
我然后绑定每一个纹理和绘制三角形带。我的纹理创建为:
glBindTexture(GL_TEXTURE_2D, m_nTextureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
glTexImage2D(GL_TEXTURE_2D, 0, 4, nWidth, nHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, pbyData);
这个过程看起来是否合理或者我误解了这个概念?有关如何实现此目的的任何提示或建议?
在进一步思考之后,情况并不像我想象的那么简单。我实际上想要做的是渲染两个正方形纹理作为重叠的圆圈(三角形粉丝)。混合是这样做的显而易见的方式,虽然我还没有找到一个很好的混合配置。我的想法是,着色器可以提供一种手段来获得更多的完整的alpha图像,而不是两个重叠的半透明图像。我可能会考虑使用着色器与渲染到纹理相结合。 – TheShiftingInt