[英]Opengl, Ruby, glBlendFunc: place transparent images on top of each others as if it was opaque
我不確定glBlendFunc是否是解決我的問題的好功能,但我認為我需要它! 這是我的問題:
你看到兩棵松樹在右邊反射了嗎? 我想要有類似的東西:
然后,我需要一種與不透明圖像相同的顯示方法,但需要透明圖像。 glBlendFunc中是否有特殊組合,還是應該通過其他方式進行?
我認為純混合方法不會起作用。 如果您有兩個重疊的樹反射,第一個樹在渲染后與水混合。 繪制第二棵樹時,您只需要將第二棵樹與水混合。 但是幀緩沖中的水的顏色已經與第一棵樹混合在一起,所以水的顏色不再僅僅在幀緩沖中了。
我想到了三種方法:
將所有樹反射繪制到FBO中,而不進行混合。 然后在水面上繪制結果,並啟用混合。
在繪制反射時,啟用深度測試(如果您當前已將其禁用)。 從前到后繪制樹木反射,相對於水面稍微偏移,並且每次反射時偏移量減小。 因此,較近的樹木的反射將隱藏更遠的樹木的反射。
與選項2類似。但是,不使用偏移和深度測試,而是使用模板測試來確保在任何像素處僅渲染一個反射樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.