夢(mèng)里花落0921
2022-07-14 16:26:27
我在我的應(yīng)用程序中使用 Open GL ES 3.1,但我遇到了一個(gè)到目前為止無(wú)法解決的問(wèn)題。當(dāng)我嘗試創(chuàng)建 3D 對(duì)象時(shí),根據(jù)調(diào)用構(gòu)造函數(shù)的位置,對(duì)象要么被正確創(chuàng)建(并且可以成功顯示),要么應(yīng)用程序崩潰,因?yàn)闊o(wú)法創(chuàng)建著色器(調(diào)用glCreateShader()返回 0)。這讓我說(shuō)我的著色器代碼是正確的。當(dāng)我嘗試使用 獲取有關(guān)錯(cuò)誤的信息時(shí),即使返回的著色器為 0 glGetError(),我也會(huì)收到!GL_NO_ERROR我也添加了setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS),但它沒有給我任何線索。我想這個(gè)問(wèn)題可能是由對(duì) Open GL 環(huán)境的并發(fā)訪問(wèn)引起的,我同步了我的繪圖和動(dòng)畫方法,但它也沒有幫助。根據(jù)這個(gè)問(wèn)題Compile GLSL shader asynchronously or in a different thread on Android,我很確定問(wèn)題來(lái)自無(wú)法在單獨(dú)的線程中使用主 Open GL 環(huán)境。但我不能確定這一點(diǎn),因?yàn)榻o出的代碼使用了我在 Open GL ES 3.1 庫(kù) ( EGLContext2, eglCreateContext, eglCreatePbufferSurface) 中找不到的類。有誰(shuí)知道我如何從我的第二個(gè)線程訪問(wèn) Open GL ES 環(huán)境?
1 回答
犯罪嫌疑人X
TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
您需要為第二個(gè)線程創(chuàng)建第二個(gè) EGL 上下文,并將其放置在與第一個(gè)上下文相同的共享組中,以便它們可以共享資源。為此,您可以share_context在調(diào)用eglCreateContext()第二個(gè)上下文時(shí)提供第一個(gè)上下文作為參數(shù)。
但我不能確定這一點(diǎn),因?yàn)榻o出的代碼使用了我在 Open GL ES 3.1 庫(kù) (
EGLContext2,eglCreateContext,eglCreatePbufferSurface) 中找不到的類。
由于函數(shù)前綴可能會(huì)泄露,對(duì)于上下文創(chuàng)建,您需要 EGL 庫(kù)而不是 GL 庫(kù)。
添加回答
舉報(bào)
0/150
提交
取消
