簡體   English   中英

OpenGL ES 2.0在iPhone Simulator中可以正常顯示,但在iPhone上不能正常顯示

[英]OpenGL ES 2.0 displays fine in iPhone Simulator but not on iPhone

我正在將iPhone應用程序從OpenGL ES 1.1轉換為ES 2.0。 該應用程序繪制到EAGLView,因為它是由Apple提供的標准OpenGL ES應用程序模板中定義的。

ES 1.1代碼在模擬器和iPhone上均可正常運行。 新的ES 2.0代碼在模擬器上運行良好,但在iPhone 3GS上,我得到的工件(例如,來自其他應用程序的縮放視圖片段)據我所知表明,我的程序對幀緩沖區感到困惑。 我發現這很奇怪,因為與ES 1.1相比,我沒有對幀緩沖區處理邏輯進行任何更改。

盡管在模擬器中可以正常工作,但我看不到要點,但我在執行繪圖的代碼部分中包括以下內容:

GLfloat data[600000];

// initialize data

glClearColor(0.f, 0.f, 0.f, 0.f);
glClear(GL_COLOR_BUFFER_BIT); 

glUseProgram(program);
glUniformMatrix4fv(uniforms[UNIFORM_PROJECTION_MATRIX], 1, GL_FALSE, projection_matrix);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEW_MATRIX], 1, GL_FALSE, modelview_matrix);

glVertexAttribPointer(ATTRIBUTE_POSITION, 3, GL_FLOAT, GL_FALSE, 0, data);
glEnableVertexAttribArray(ATTRIBUTE_POSITION);
glDrawArrays(GL_POINTS, 0, 200000);
glFlush();

似乎OpenGL ES 2實現中存在錯誤。 提示是當我更改glDrawArrays(GL_POINTS, 0, 200000); glDrawArrays(GL_LINES, 0, 200000); 設備上沒有顯示問題。 使用GL_POINTS的解決方案(在此處找到)是將gl_PointSize = 1.0;設置gl_PointSize = 1.0; 在頂點着色器中。

編輯:這可能不是錯誤,請參閱此處

如果相應的着色器可執行文件未寫入gl_PointSize,則在頂點,鑲嵌細分控制和鑲嵌細分評估着色階段之后,將無法定義 gl_PointSize的值(或在鑲嵌細分控制着色器的情況下,為gl_out []數組的gl_PointSize成員)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM