我想在OpenGL中渲染模型。我在C++和OpenGL的第4天(是的,我已經很快學會了這一點),並且我在紋理方面略有停頓。如何讓我的對象透明但仍然顯示紋理?
我在製作紋理alpha工作時遇到了一些麻煩。在這張圖片中,我有來自螺旋騎士的這個角色。正如你可以在頭頂看到的那樣,有那些白色的部分。
我有混合方法啓用,什麼我假設我在這裏的混合功能設置爲glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
,這就是爲什麼我問這個問題,是質地透明是工作,但紋理背後的三角形仍在顯示。
如何讓這些三角形看不見但仍能顯示我的紋理?
謝謝。
Threre沒有「紋理背後的三角形」。 GL不繪製紋理,它繪製原始圖形。完全不清楚究竟發生了什麼(你的紋理有哪些akoha值,你如何將紋理結合到最終的片段顏色等等)。 YOu也應該知道,混合將需要以正確的順序繪製原語。在這種特殊情況下,你甚至可以通過不使用混合來解決這個問題,而只是通過基於alpha的丟棄來解決這個問題。 – derhass
你說_「只是通過基於alpha的丟棄。」_ - 我做了一些關於丟棄的研究,但是從我讀過的內容可能會有點緩慢。有沒有其他方法?我做了一些搜索替代方法並啓用alpha測試,然後將alpha函數設置爲'glAlphaFunc(GL_GREATER,0.0);'但似乎沒有工作。 –
alpha測試已棄用。現代的方法在着色器中被丟棄。在這種情況下「慢」的真正含義很難預先說明。你可能會後退到深度測試,並且你會得到一定程度的非均勻控制流。但是,您獲得訂單獨立性作爲回報。 – derhass