Java OpenGL ES 2.0没有';我什么也不画

Java OpenGL ES 2.0没有';我什么也不画,java,android,graphics,opengl-es,3d,Java,Android,Graphics,Opengl Es,3d,我对OpenGLES2.0有一个问题。我设计了一个非常简单的框架来帮助我加载OBJ文件并在我的Android手机上绘制它们,但我有两个无法修复的bug: 我的应用程序不会显示任何内容,直到我改变方向,活动被刮取并重新加载。直到重新加载为止,只能看到GLES20.glClear()(我已将其设置为灰色) 有时,当我加载一个OBJ并执行定向技巧时,我的一半面丢失,我看到了间隙,但问题可能是我使用的OBJ文件 `尝试了一些glGetError()并出现错误,一个是关于其值未更改的变量,另一个是glG

我对OpenGLES2.0有一个问题。我设计了一个非常简单的框架来帮助我加载OBJ文件并在我的Android手机上绘制它们,但我有两个无法修复的bug:

  • 我的应用程序不会显示任何内容,直到我改变方向,活动被刮取并重新加载。直到重新加载为止,只能看到GLES20.glClear()(我已将其设置为灰色)

  • 有时,当我加载一个OBJ并执行定向技巧时,我的一半面丢失,我看到了间隙,但问题可能是我使用的OBJ文件



  • `

    尝试了一些glGetError()并出现错误,一个是关于其值未更改的变量,另一个是glGetAttributeLocation()在顶点着色器中未使用该属性时返回-1。谢谢你的帮助

    几何体的问题可能是由于在矩阵乘法中使用相同的浮点数组进行输入和输出:
    Matrix.multipleymm(mMVPMatrix,0,mProjectionMatrix,0,mMVPMatrix,0)
    根据multipleymm()规范,输入和输出数组可能没有重叠的元素,但使用相同的数组mMVPMatrix,从相同的索引0开始。解决此问题的一种方法是使用另一个矩阵作为最后一次乘法结果的缓冲区,而不是:

    Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0);
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mMVPMatrix, 0);
    
    使用:


    没有人愿意帮忙…?我看不出有什么明显的问题。您是否在任何地方的代码中使用glGetError?你应该阅读它的工作原理,并用它来检查错误。谢谢你的提醒。我发现错误1281是罪魁祸首。我正在尝试调试。这似乎是GL_无效值…是的,这是正确的。要做的重要事情是找到生成它的命令。在找到生成错误的行之前,您必须添加/移动glGetError调用。该命令的手册页将告诉您它生成了什么类型的错误以及原因。
    Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0);
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mMVPMatrix, 0);
    
    Matrix.multiplyMM(mMatrixFinal, 0, mProjectionMatrix, 0, mMVPMatrix, 0);
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mMatrixFinal, 0);