【发布时间】:2013-12-26 21:51:42
【问题描述】:
我正在将 OpenGLES1 用于增强现实应用程序。
在应用程序中,我可以四处走动并查看一些使用一些简单几何方法绘制的 3d 形状:
void render()
{
....
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
drawCube(…);
drawPyramid(…);
for (int i = 0; i<10; i++) {
drawLine(0, i, 100, i);
}
....
}
这些方法的工作原理是这样的,带有顶点数组:
void drawLine(float x1,float y1,float x2,float y2) const
{
const GLfloat line[] = {
x1,y1,15, //point A
x2,y2,15 //point B
};
glColor4f(0.0f,0.0f,1.0f,1.0f); //line color
glLineWidth(2.0f);
glVertexPointer(3, GL_FLOAT, 0, line);
glDrawArrays(GL_LINES, 0, 2);
glColor4f(1, 1, 1, 1);
}
我的问题是这些方法在模拟器上运行良好,但在我的手机上却不行。每次我调用以下 2 个低级方法之一时:
glDrawElements(GL_TRIANGLE_FAN, 3, GL_UNSIGNED_BYTE, &pyramidVertexFaces[i]);
glDrawArrays(GL_LINES, 0, 2);
应用程序因 EXC_BAD_ACCESS 而崩溃
如果我删除那些 3d 形状,应用程序就会工作。
知道为什么这些方法在模拟器上按预期工作,但在设备上崩溃?
【问题讨论】:
标签: ios iphone opengl-es 3d exc-bad-access