-
載入紋理的步驟:
-
GLES20.glGenTextures() : 生成紋理資源的句柄
-
GLES20.glBindTexture(): 綁定句柄
-
GLUtils.texImage2D() :將bitmap傳遞到已經(jīng)綁定的紋理中
-
GLES20.glTexParameteri() :設(shè)置紋理屬性漾狼,過濾方式文兢,拉伸方式等
-
-
紋理的數(shù)據(jù)來源
-
將Bitmap以紋理的形式載入OpenGL中:
/** * @param textureTarget Texture類型。 * 1. 相機用 GLES11Ext.GL_TEXTURE_EXTERNAL_OES * 2. 圖片用GLES20.GL_TEXTURE_2D * @param minFilter 縮小過濾類型 (1.GL_NEAREST ; 2.GL_LINEAR) * @param magFilter 放大過濾類型 * @param wrapS X方向邊緣環(huán)繞 * @param wrapT Y方向邊緣環(huán)繞 * @return 返回創(chuàng)建的 Texture ID */ public static int createTexture(int textureTarget, @Nullable Bitmap bitmap, int minFilter, int magFilter, int wrapS, int wrapT) { int[] textureHandle = new int[1]; GLES20.glGenTextures(1, textureHandle, 0); checkGlError("glGenTextures"); GLES20.glBindTexture(textureTarget, textureHandle[0]); checkGlError("glBindTexture " + textureHandle[0]); GLES20.glTexParameterf(textureTarget, GLES20.GL_TEXTURE_MIN_FILTER, minFilter); GLES20.glTexParameterf(textureTarget, GLES20.GL_TEXTURE_MAG_FILTER, magFilter); //線性插值 GLES20.glTexParameteri(textureTarget, GLES20.GL_TEXTURE_WRAP_S, wrapS); GLES20.glTexParameteri(textureTarget, GLES20.GL_TEXTURE_WRAP_T, wrapT); if (bitmap != null) { GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); } checkGlError("glTexParameter"); return textureHandle[0]; }
-
將 RGB 以紋理的形式載入OpenGL中:
/*** * 將 RGB 數(shù)據(jù) 轉(zhuǎn)化 成紋理 ID * @param videoW 紋理寬 * @param videoH 紋理高 * @param rgbData 視頻楨的 RGB 數(shù)據(jù) * @param textureId 因為視頻根據(jù)幀率刷新,頻繁調(diào)用onDrawFrame, * 所以不適合多次創(chuàng)建紋理資源ID管挟, * 所以最好在onCreate創(chuàng)建好雀鹃,免得OOM * @return 綁定好 RGB 數(shù)據(jù)的紋理 ID */ public static int generateRGBTexture(int videoW, int videoH, byte[] rgbData, int textureId) { if (rgbData == null) { return -1; } ByteBuffer colorByteBuffer = null; if (colorByteBuffer == null) { colorByteBuffer = ByteBuffer.allocate(videoW * videoH * 4); } //生成紋理ID GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId); if (colorByteBuffer != null) { colorByteBuffer.clear(); colorByteBuffer.put(rgbData, 0, videoW * videoH * 4); } else { return -1; } colorByteBuffer.position(0); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, videoW, videoH, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, colorByteBuffer); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); return textureId; }
-
OpenGL進階之關(guān)于生成紋理ID
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門岳守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凄敢,“玉大人,你說我怎么就攤上這事湿痢±苑欤” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵譬重,是天一觀的道長拒逮。 經(jīng)常有香客問我,道長臀规,這世上最難降的妖魔是什么滩援? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮塔嬉,結(jié)果婚禮上玩徊,老公的妹妹穿的比我還像新娘租悄。我一直安慰自己,他們只是感情好佣赖,可當我...
- 文/花漫 我一把揭開白布恰矩。 她就那樣靜靜地躺著记盒,像睡著了一般憎蛤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纪吮,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熙尉!你這毒婦竟也來了联逻?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布缚态,位于F島的核電站,受9級特大地震影響堤瘤,放射性物質(zhì)發(fā)生泄漏玫芦。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一本辐、第九天 我趴在偏房一處隱蔽的房頂上張望桥帆。 院中可真熱鬧医增,春花似錦、人聲如沸老虫。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽祈匙。三九已至忽刽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夺欲,已是汗流浹背跪帝。 一陣腳步聲響...