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