Я конвертирую приложение для iPhone из OpenGL ES 1.1 в ES 2.0. Приложение обращается к EAGLView, как это определено в стандартном шаблоне приложения OpenGL ES, как это предусмотрено Apple.
Код 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();