當前位置:首頁 » 安卓系統 » android紋理

android紋理

發布時間: 2024-01-30 21:49:56

『壹』 android 用png圖像做opengl紋理時出現黑邊怎麼解決

誒呀,你這種用法大錯特錯了呀!texImage2D不能亂用呀,他是把資源導入GL用的,有點像玩游戲時的Loading.你應該在你的程序初始化時先glGentexture生成多個紋理句柄然後BindTexture,再把你需要的圖片依次輸入這時GL已經擁有了你全部的圖片資源,然後在繪制的時候,用到哪張紋理就先Bind這個紋理,然後DrawArray,再Bind再DrawArray/DrawElement..哪有你這樣每次draw都要texImage2D的?這不要慢死了推薦你去powervr的網站下載Opengles的pc端SDK,裡面好多demo

『貳』 cocos2dx android切換後台為什麼要重建紋理

android系統下,切入後台,則紋理全部失效,從後台切到前台,cocos2d-x會重新載入紋理。這樣有兩個問題:

1、如果紋理較多的話,載入紋理會卡很長時間,就像死機一樣。 變通解決方法是修改引擎代碼,增加一個進度條提示。

2、文字描邊等用到RenderTexture的地方會出現異常紋理,文字會花掉。 暫時不知道原因,無解。


這里提供一個解決方案,解決掉紋理失效的問題,初步測試沒有發現大的問題,但是具體還要看實際運行情況,畢竟android機器太多了。

1、Cocos2dXGLSurfaceView.java代碼修改

[cpp]view plain
  1. @Override
  2. publicvoidonPause(){
  3. this.queueEvent(newRunnable(){
  4. @Override
  5. publicvoidrun(){
  6. Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleOnPause();
  7. }
  8. });
  9. //super.onPause();
  10. }

2、main.cpp中修改

[cpp]view plain
  1. voidJava_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*env,jobjectthiz,jintw,jinth)
  2. {
  3. InitCrashReport();
  4. if(!CCDirector::sharedDirector()->getOpenGLView())
  5. {
  6. CCEGLView*view=CCEGLView::sharedOpenGLView();
  7. view->setFrameSize(w,h);
  8. AppDelegate*pAppDelegate=newAppDelegate();
  9. CCApplication::sharedApplication()->run();
  10. }
  11. //else
  12. //{
  13. //ccDrawInit();
  14. //ccGLInvalidateStateCache();
  15. //CCShaderCache::sharedShaderCache()->reloadDefaultShaders();
  16. //CCTextureCache::reloadAllTextures();
  17. //CCNotificationCenter::sharedNotificationCenter()->postNotification(EVNET_COME_TO_FOREGROUND,NULL);
  18. //CCDirector::sharedDirector()->setGLDefaultValues();
  19. //}
  20. }

『叄』 android 中 glCompressedTexImage2D(GL_PALETTE8_RGBA8_OES)生成的壓縮紋理在顯存中是壓縮的嗎

是壓縮的。由於減少了帶寬佔用,對性能是有好處的。不過畫質是有損的。 你用的這個參數會出錯吧

『肆』 Android音視頻之使用OpenGL ES繪制圖片

關於 OpenGL ES 的介紹,請先看上篇: Android 音視頻之使用 OpenGL ES 繪制三角形 。

使用 OpenGL ES 繪制簡單的幾何形狀還不夠,OpenGL 更多地是用來顯示而紋理圖像,比如本地圖片、相機畫面。簡單說,紋理(texture)就是一個圖像或照片,它們可以被載入進 OpenGL 中。

OpenGL 中的紋理可以擾判用來表示圖像、照片等,每個二維的紋理都由許多小緩缺改的紋理元素組成,它們是小塊的數據,類似片段和像素。要使用紋理,最常用的方式是直接從一個圖像文件載入數據。

紋理不會被直接繪制,它們要被綁定到紋理單元,然後把這些紋理單元傳遞給著色器。紋理映射的基本思想就是:首先為圖元中的每個頂點指定恰當的紋理坐標,然後通過紋理坐標在紋理圖中可以確定選中的紋理區域,最後將選中紋理區域中的內容根據紋理坐標映射到指定的圖元上。

紋理的坐標系和頂點著色器的坐標系是不一樣的。紋理坐標用浮點數來表示,范圍 [0, 1],左上角坐標為 (0.0, 0.0),右上角坐標為 (1.0, 0.0)。注意:要將紋理坐標對應到正確的頂點上,才能使紋理正確扮銀地顯示。

定義頂點和紋理坐標,兩者的順序必須一一對應。

定義著色器。

載入圖片到 OpenGL 中。

計算變換矩陣,採用 CenterInside 或者 CenterCrop 的方式顯示。

顯示圖片。

源碼在 GitHub 上。

參考資料:

熱點內容
sqlserver2008分區表 發布:2024-11-28 13:41:58 瀏覽:481
php輸出array 發布:2024-11-28 13:30:15 瀏覽:745
汽車安卓大屏的高德怎麼卸載 發布:2024-11-28 13:26:00 瀏覽:701
androidbitmap失真 發布:2024-11-28 13:05:04 瀏覽:866
php圖片識別文字 發布:2024-11-28 12:55:23 瀏覽:823
redis永久緩存 發布:2024-11-28 12:37:40 瀏覽:56
php是自學網 發布:2024-11-28 12:33:57 瀏覽:733
php採集系統 發布:2024-11-28 12:32:04 瀏覽:908
資料庫恢復的實現技術 發布:2024-11-28 12:25:26 瀏覽:6
壓縮圖檔 發布:2024-11-28 12:25:23 瀏覽:424