我試圖在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