我试图在 GLSL 中混合两个部分重叠的纹理,我想知道我是否误解了多重纹理的概念。是否要求纹理完全重叠,或者您是否可以有两个仅在它们重叠的地方混合的偏移纹理?
我有两个类似于以下的图像(减去网格线和文本): 示例图像
理想情况下,图像的重叠部分会很好地融合在一起,以便最终结果看起来像一张将两者结合在一起的平滑图像。例如,重叠的橙色像素会混合在一起或采用更高的强度。
我是 GLSL 的新手,一直在使用这篇文章GLSL Shader Article,它使用片段着色器来混合纹理(相当标准)。
在文章之后,我@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);
这个过程看起来合理还是我误解了这个概念?关于如何实现这一目标的任何提示或建议?