glDrawArrays在vm中工作,在手机上崩溃

时间:2011-02-16 17:36:27

标签: android opengl-es android-ndk

我在Android NDK的opengl中画了一行。我一直在VM上开发,最近才在手机上试用了我的应用程序。该应用程序在vm上正常运行。绘制一条线。然而,在摩托罗拉机器人上,应用程序只是崩溃,而在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*/

接下来我可以尝试drawelements,但是没有理由绘制数组不应该工作(据我所知)。

1 个答案:

答案 0 :(得分:1)

您正在启用颜色数组(glEnableClientState(GL_COLOR_ARRAY)),而不实际设置glColorPointer()

设置颜色指针或不启用颜色数组。