[英]Android Blend transparent png image on existing background
我正在嘗試在Android的OpenGL ES 1.x中創建模擬儀表。 我使用綠色的中點定理創建了一個簡單的圓。 現在,我想在圓圈周圍放置一些數字以進行儀表讀數。 由於OpenGL沒有本機文本呈現API,因此我嘗試加載這樣的PNG圖片 上面的讀數和其余圖像是透明的。
現在,必須將哪些參數傳遞給glBlendFunc()函數才能實現此目的。 我嘗試了許多不同的組合,但是沒有用。
這是Android上的常見問題。 您不能使用Android Bitmap類加載其中具有透明區域的紋理。 這是因為位圖遵循Porter-Duff規范進行alpha混合,並且位圖通過以預乘格式(A,R * A,G * A,B * A)存儲圖像來優化每像素alpha的圖像。 這對Porter-Duff很有用,但對OpenGL(不需要非預乘(ARGB)格式)的OpenGL來說非常有用。 這意味着Bitmap類只能與完全不透明(或沒有按像素的alpha)的紋理一起使用。 本文詳細介紹:
只需嘗試傳遞以下Alpha混合值:
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
希望對您有所幫助。
我不認為(即使在2.2版)Alpha PNG也不是Android位圖加載算法的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.