我正在使用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);
}
我的问题是这些方法在模拟器上工作正常,但在我的手机5上没有。每当我拨打以下两种低级方法中的一种时:
glDrawElements(GL_TRIANGLE_FAN, 3, GL_UNSIGNED_BYTE, &pyramidVertexFaces[i]);
glDrawArrays(GL_LINES, 0, 2);
该应用与EXC_BAD_ACCESS
崩溃如果我删除这些3d形状,该应用程序可以正常工作。
任何想法为什么这些方法在模拟器上按预期工作但在设备上崩溃?
答案 0 :(得分:0)
如果在该行[]上使用const将它放在某个奇怪的内存中,以至于openGL在设备上无法正常访问时,我不会感到惊讶。这是一个很长的镜头。