Я пишу приложение, которое рисует в openGL es 1.0 в Android NDK и отображает его на телефоне Android.Пока я могу нарисовать две линии.Проблема в том, что эти две линии - радуга.Я пытался отладить, где координаты на экране (где 0,0 и 1,1), поэтому я добавил цвет к двум линиям, которые я рисую.Один должен быть нарисован красным, другой зеленым.Код, который я использую для их рисования, выглядит следующим образом:
void appInit()
{
glEnable(GL_CULL_FACE);
}
void appRender(jint width, jint height)
{
prepareFrame(width, height);
drawLines();
}
void drawLines()
{
glLoadIdentity();
glPushMatrix();
GLfloat color1[] = {0.0f,1.0f,0.0f,1.0f};
drawLine( 1.0f,1.0f,2.0f,2.0f,color1);
glPopMatrix();
glPushMatrix();
GLfloat color2[] = {1.0f,0.0f,0.0f,1.0f};
drawLine(0.0f,0.0f,1.0f,1.0f, color2);
glPopMatrix();
}
void drawLine(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, GLfloat * color)
{
GLfloat vVertices[] =
{x1, y1,
x2, y2};
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
//glColor4f(color[0],color[1],color[2],color[3]);
glColorPointer(4,GL_FLOAT,0,color);
glVertexPointer(2, GL_FLOAT, 0, vVertices);
glDrawArrays(GL_LINES, 0, 4);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
}
void prepareFrame(int width, int height)
{
glViewport(0, 0, width, height);
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glLoadIdentity();
}
вызывается appInit, затем снова и снова вызывается appRender с размерами экрана.Результат таков:
http://i.stack.imgur.com/G91oX.png
Если кто-нибудь знает, почему они рисуют радугу вместо цветов, которые я указал, это было бы замечательно.Бонусные баллы, если вы можете сказать мне, на что похожа система координат по умолчанию на андроиде (не используется слепая перспектива или lookat).