glDrawArrays работает в vm, вылетает на телефоне - PullRequest
1 голос
/ 16 февраля 2011

Я рисую линию в открытых окнах из Android NDK.Я занимался разработкой на виртуальных машинах и только недавно попробовал свое приложение на телефоне.Приложение отлично работает на виртуальной машине.Линия нарисована.Тем не менее, на Motorola Droid приложение просто вылетает, а на HTC невероятно просто показывает черный экран.Я проверил, что число, переданное функции, является правильным.Приложение вызывает вызов glDrawArray (GL_LINES, 0, 2).Вся функция выглядит так:

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]);
    glVertexPointer(2, GL_FLOAT, 0, vVertices);

    glDrawArrays(GL_LINES, 0, 2);
    __android_log_write(ANDROID_LOG_ERROR,"to mama","You drew arrays");

    glDisableClientState(GL_COLOR_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
}

и вызов к ней выглядит следующим образом:

drawLine(0.0f,0.0f,1.0f,0.0f,colorx);/*x is green*/

Далее я могу попробовать драументы, но нет причин, по которым массивы рисования не должны работать(насколько я знаю).

1 Ответ

1 голос
/ 16 февраля 2011

Вы включаете массив цветов (glEnableClientState(GL_COLOR_ARRAY)), фактически не устанавливая параметр glColorPointer().

Либо установите указатель цвета, либо не включайте массив цветов.

...