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

标签 android opengl-es android-ndk

我在 Android NDK 的 opengl es 中画了一条线。我一直在 VM 上开发,最近刚刚在手机上试用了我的应用程序。该应用程序在虚拟机上运行良好。画了一条线。然而,在摩托罗拉机器人上,应用程序只是崩溃,而在 HTC incredible 上,它只是显示黑屏。我已经验证传递给函数的数字是正确的。应用程序停止调用 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,但没有理由绘制数组不工作(据我所知)。

最佳答案

您启用了颜色数组 (glEnableClientState(GL_COLOR_ARRAY)) 而没有实际设置 glColorPointer() .

要么设置颜色指针,要么不启用颜色数组。

关于android - glDrawArrays 在 vm 中工作,在手机上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019946/

相关文章:

c++ - 谷歌 protobuf 和 A​​ndroid NDK

android - 可以在自定义 Progressbar progressDrawable 中做圆角吗?

android - 在同一着色器中混合具有不同坐标和大小的两个纹理

iphone - OpenGL 到 OpenGL-ES - glBegin();

ios - SCNProgram – 如何将类型为 "mat4"的制服传递给自定义着色器?

android - 在android NDK中包含本地头文件时 undefined reference

android NDK ndk-构建错误

android - 成功同步后,同步网关不会删除文档,并且 Android 应用程序正在追赶文档

android - 为没有回调的传感器创建循环程序?

android - ClassCastException : android. 部件.LinearLayout$LayoutParams