簡體   English   中英

Opengl,Ruby,glBlendFunc:將透明圖像放在彼此的頂部,就好像它是不透明的一樣

[英]Opengl, Ruby, glBlendFunc: place transparent images on top of each others as if it was opaque

我不確定glBlendFunc是否是解決我的問題的好功能,但我認為我需要它! 這是我的問題:

在此輸入圖像描述

你看到兩棵松樹在右邊反射了嗎? 我想要有類似的東西:

在此輸入圖像描述

然后,我需要一種與不透明圖像相同的顯示方法,但需要透明圖像。 glBlendFunc中是否有特殊組合,還是應該通過其他方式進行?

我認為純混合方法不會起作用。 如果您有兩個重疊的樹反射,第一個樹在渲染后與水混合。 繪制第二棵樹時,您只需要將第二棵樹與水混合。 但是幀緩沖中的水的顏色已經與第一棵樹混合在一起,所以水的顏色不再僅僅在幀緩沖中了。

我想到了三種方法:

  1. 將所有樹反射繪制到FBO中,而不進行混合。 然后在水面上繪制結果,並啟用混合。

  2. 在繪制反射時,啟用深度測試(如果您當前已將其禁用)。 從前到后繪制樹木反射,相對於水面稍微偏移,並且每次反射時偏移量減小。 因此,較近的樹木的反射將隱藏更遠的樹木的反射。

  3. 與選項2類似。但是,不使用偏移和深度測試,而是使用模板測試來確保在任何像素處僅渲染一個反射樹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM