Рисование примитива OpenGLES без текстуры или шейдера приводит к ошибке - PullRequest
1 голос
/ 14 января 2012

Я пытаюсь нарисовать простую коробку в моей игре для iPhone.

Вот код, который отображает поле:

- (void)render {
  const SHAPE_TYPE * shape = dynamic_cast<SHAPE_TYPE *>(fixture->GetShape());

  if (!shape)
    return;

  GLfloat vertices[shape->m_vertexCount][2];
  for (int i = 0; i < shape->m_vertexCount; ++i) {
    vertices[i][0] = shape->m_vertices[i].x;
    vertices[i][1] = shape->m_vertices[i].y;
  }

  glPushMatrix();
  glLoadIdentity();
  CHECK_GL_ERROR();
  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  CHECK_GL_ERROR();
  glDisableClientState(GL_COLOR_ARRAY);
  CHECK_GL_ERROR();
  glEnableClientState(GL_VERTEX_ARRAY);
  CHECK_GL_ERROR();

  glVertexPointer(2, GL_FLOAT, 0, vertices);
  glDrawArrays(GL_LINE_LOOP, 0, (GLsizei)shape->m_vertexCount);

  glDisableClientState(GL_VERTEX_ARRAY);
  glEnableClientState(GL_COLOR_ARRAY);
  glEnableClientState(GL_TEXTURE_COORD_ARRAY);

  glPopMatrix();

  CHECK_GL_ERROR();
}

я получаю ошибку на втором CHECK_GL_ERROR Ошибка OpenGL error 0x0502 in -[MyApp render] 97

У меня нет настроек opengl, кроме того, что вы видите. Я думаю, что это как-то связано с каким-то состоянием, которое разрешает cocos2d, но не знаю, какое именно.

1 Ответ

0 голосов
/ 14 января 2012

Попробуйте использовать ccDrawPoly :

ccDrawPoly(vertices, shape->m_vertexCount, YES);

Кроме того, на всякий случай, когда вы используете cocos2d 2.0, имейте в виду, что вам придется писать код OpenGL ES 2.0.Размещенный вами код не будет работать без ошибок OpenGL в cocos2d 2.0.

...