2012-01-30 115 views
0

我已經使用OpenGL在OS X上編寫了一個測試程序,該程序加載了一個PNG,使用libsquish(http://code.google.com/p/libsquish/)將其壓縮到DXT5中, ,並紋理一架飛機。使用DXT5壓縮紋理的Alpha通道

當我上傳包含alpha通道的圖像,但沒有像素具有比完全不透明其他的α值,它顯示正確:http://i.imgur.com/nElZ8.png

給定相同的圖像,但是黑色部分被替換的透明性,這是輸出我得到:http://i.imgur.com/8Ld3y.png

的代碼不漂亮,這是概念的拋出一起證明:

  1. 的C++源:http://pastebin.com/m0RqpgUS
  2. 頂點着色器:http://pastebin.com/QyaWCaTk
  3. 片段着色器:http://pastebin.com/KEuFJ83C
  4. 測試圖像:http://dl.dropbox.com/u/4597377/images.zip

有什麼想法?

+0

如果您使用的離線工具生成的壓縮數據,而不是你在谷歌代碼發現了一些圖書館,會發生什麼? – 2012-01-30 15:12:56

+0

你確定你的alpha值始終爲255嗎?我每天使用擠壓,它確實保持阿爾法好。你能發佈你用來創建正確圖像的'參考'代碼嗎? – rotoglup 2012-01-31 08:21:19

回答

0

原來我忘了這一點:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);