牛肉★咪哭der口罩
今天進度有夠爛.............
完全不會寫......
Hiki@Home
有同事能給你建議嗎?
牛肉★咪哭der口罩
Hiki@Home : 沒有
Hiki@Home
雖然我一定幫不上忙,但大大來說說哪裡卡關了
跟我說的過程中能把問題梳理一下,可能會比較順
牛肉★咪哭der口罩
Hiki@Home : 現在ㄛ
就是unity跟android的互溝通
有點像插件那樣,把不能在unity上實現的安卓功能先包裝再給unity去叫方法,然後回call
但是因為有個功能是開相機,因為他的開法很特殊ㄅ能用unity的webtexture,但是回傳bytes會讓效能爆炸
牛肉★咪哭der口罩
所以目前問到的方法是,先用OpenGL ES先渲染,讓unity取得texture id
然後直接成像
牛肉★咪哭der口罩
然後就出錯ㄌ
說call OpenGL with no current context
牛肉★咪哭der口罩
因為我完全不懂OPENGL雖然之前有自學點shader
可4還是看不懂那邊在寫的
牛肉★咪哭der口罩
反正明天要弄別的案子
會先放一段時間吧
Hiki@Home
牙白,我不太懂
Hiki@Home
以前就會叫你給我專案我來學
Hiki@Home
滾去吸咪哭
牛肉★咪哭der口罩
Hiki@Home : 好吧!我講更簡單一點
1、相機畫面一直在動也就是不斷地抽換圖片(bytes)
2、unity跟android的插件可以互傳一些int string的小參數,但圖片這種沒辦法(byte數量差太多)
3、理論解法是把圖片存在位址(指標)給unity,讓他拿等量的bytes就不用傳大量資料
4、不知為何出錯ㄌ,不知道怎麼改
Hiki@Home
這又講得太淺顯了
明天我來想想(感興趣
halipapon
因為android有規定不得於draw function以外的地方渲染
你應該是在非GLThread的地方用了OpenGL
要用GLSurfaceView這個instance method來橋接
詳細請看:
GLSurfaceView  |  Android Developers
halipapon
簡單的範例
------
GL10 gl = getGL();
int textureIds[] = new int[1];
gl.glGenTextures(1, textureIds, 0);
int textureId = textureIds[0];
------
textureId會收不到textureID而出錯
halipapon
要改成↓
final GL10 gl = getGL();
final int textureIds[] = new int[1];
GLSurfaceView glView = getGLView();
glView.queueEvent(new Runnable() {
@Override
public void run() {
gl.glGenTextures(1, textureIds, 0);
int textureId = textureIds[0];
}
});
halipapon
阿 要注意的是這個Handling events非同步處理
所以要注意在材質讀取完畢前就已經使用材質的bug發生
需要加入防null機制
牛肉★咪哭der口罩
halipapon : 喔喔,感謝大大解答
之後來試試看
Hiki@Home
朝拜
載入新的回覆