我在OpenGL中加載透明alpha的DDS圖像(DXT5)。由於alpha不是預乘,並且不能根據DXT5 specs進行預倍乘,所以我在紋理的可見部分周圍形成了薄黑色暈圈,因爲我在GPU上執行了一些混合操作。我的問題是:什麼是最佳解決方法我的OpenGL渲染器更新每個幀上的場景紋理,加載那些來自IO的場景紋理,所以如果我先解壓縮DDS然後預先多層壓縮,然後壓縮回來,我得到了巨大的開銷。我認爲另一個選項是添加另一個渲染通道並執行pre - 在片段着色器中進行渲染並渲染到紋理,然後將其用於主通道。由於我已經有通道的下降數量,因此會在整個管道中增加開銷。此處還有哪些其他選項?DXT5的預乘alpha值
回答
問題解決了。我有一個損壞的DDS紋理。我在默認情況下在片段着色器中執行的手動預乘法與有效的DXT5完美匹配。
爲什麼不只是讓你的着色器在現場進行alpha預乘,然後做你通常要做的事情?
沒有必要將其渲染到紋理。只需總是在您的着色器中預乘,對於全部紋理,您需要預乘。
這沒有幫助。這就是爲什麼我正在嘗試變通方法......順便說一下,它並沒有幫助,因爲它發生在MSAA中,所以傳遞的是未加調整的DDS紋理數據得到插值並用細的黑色邊框設置這個令人討厭的光環。我發現GL_NEAREST會將其去除,但如果紋理應用的平面縮放一點,它會增加邊緣像素化。 –
您不能多重採樣DDS紋理(除非您正在手動*,在這種情況下,它不再是多重採樣)。所以目前還不清楚你在說什麼。 –
默認情況下,我運行幾次pass.The首先是MSAA.I渲染幾何在那個傳遞與DDS紋理。現在當你說我不能這樣做,可能是這個問題?我的意思是黑色光環來自事實我在帶有alpha通道的DDS上做MSAA? –
- 1. 預乘alpha混合
- 2. 使用Vector4預乘Alpha組合
- 3. 如何知道圖像是「預乘Alpha」?
- 4. PNG預乘Alpha,iOS模擬器與iPad
- 5. 讀出一個FBO與預乘alpha
- 6. Android設備上的DXT5紋理中缺少alpha通道
- 7. 使用DXT5壓縮紋理的Alpha通道
- 8. 使用gdi +在alpha乘以alpha位前乘以一個hdc?
- 9. 乘以其alpha的每個像素Open GLES 1.1(預乘)然後反轉
- 10. 有人有一個優化的函數預乘alpha位圖嗎?
- 11. 編程alpha在OpenGL 2.0中褪色預乘的紋理
- 12. 請解釋預乘alpha的工作原理
- 13. FLV預乘alpha通道 - 作爲swf添加到網頁中?
- 14. 在php中imagecopyresampled - 預乘alpha處理問題
- 15. 從兩個文件(RGB + Alpha)創建DDS(DXT5)。命令行工具需要
- 16. PNG的Alpha值
- 17. uitabbaritem的alpha值
- 18. pygame的alpha值
- 19. 如何在沒有預乘alpha的情況下獲得真實的RGBA或ARGB顏色值?
- 20. OpenGL和相機預覽 - 預乘alpha - 混合在一起會得到「過飽和」的顏色
- 21. 如何設置位圖預設置Alpha的alpha?
- 22. 預乘以中的R
- 23. 預測乘法的位數
- 24. WPF alpha閾值
- 25. 乘值
- 26. 乘值
- 27. FrontBuffer有alpha值嗎?
- 28. UICollectionViewCell alpha值旋轉
- 29. UIView alpha值問題
- 30. CSS顏色預乘或不?
「*我的OpenGL渲染器更新每個幀上的場景紋理,加載那些來自IO *」您正在每幀加載和壓縮紋理?爲什麼? –
在這裏不能解釋,因爲它是商業的東西,但這是特殊用途的renderer.It應該這樣工作:) –
也就是說,順便說一句,我在這裏使用DDS的原因 - 加快上傳時間。對不起,我我沒有實時壓縮紋理。我加載了準備好的DDSs –