Note II上的官方Google OpenGL ES 2.0演示空白,但不是Nexus 7吗?

时间:2013-12-13 01:17:10

标签: android opengl-es opengl-es-2.0

注释II(4.1.2):http://i.imgur.com/orfAxBW.png

Nexus 7(4.3):http://i.imgur.com/CZhQ59o.png

使用的代码:http://developer.android.com/training/graphics/opengl/index.html

据我所知,手机和Android版本都应该支持OpenGL 2.0。

此外,我尝试在开发面板中切换各种GPU设置后运行应用程序,但它们没有任何区别,因此我将其恢复为默认值。如果有人想知道,没有"布局边界"显示为正方形或三角形。

我也试过切换背景颜色,看看它是不是只绘制了一个,但没有做任何事。

2 个答案:

答案 0 :(得分:0)

我最终继续在我的Nexus7上进行开发,当我进一步开发时,我将它闪现在我的Note II中,它再次起作用!如果需要,您可以在此处使用我的代码:stable commitcode for that commit

将其设置为社区维基,如果有人追踪原始问题,请随时将其添加到此处。

Reddit /r/gamedev thread

答案 1 :(得分:0)

一般来说,调试它的方法是使用glGetError()。这是我使用的方法,它帮助我调试OpenGL。它检查是否发生了任何错误,并抛出异常以便您进行调试。您可以将其复制粘贴到某处,然后在绘制调用之间调用它以找出导致问题的原因。

注意:you can also不是我下面的hacky“DEBUGGING”标志,而是检查Eclipse是否在调试模式下编译了应用程序:

/** This method will check for any OpenGL errors that have occurred since the last time you called it.
 * If it finds one, it will cause the program to crash immediately and output a stacktrace.
 * To debug OpenGL, call this in between your OpenGL functions to zero in on where the error is.
 * @param operationDescription Note to yourself about what you were doing, to be printed if there's an error
 */
static final void checkGlError(String operationDescription){

    if(Main.DEBUGGING){//only do the program-crashing thing in debug mode. In release mode, try to ride through errors. Replace my boolean with yours.
        int errorCode;
        while ((errorCode = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
            String error;
            switch(errorCode) {
                case GLES20.GL_INVALID_OPERATION:      error="INVALID_OPERATION";      break;
                case GLES20.GL_INVALID_ENUM:           error="INVALID_ENUM";           break;
                case GLES20.GL_INVALID_VALUE:          error="INVALID_VALUE";          break;
                case GLES20.GL_OUT_OF_MEMORY:          error="OUT_OF_MEMORY";          break;
                case GLES20.GL_INVALID_FRAMEBUFFER_OPERATION:  error="INVALID_FRAMEBUFFER_OPERATION";  break;
                default: error="Unknown error code";
            }
            Log.e("checkGlError", operationDescription + ": glError " + error);
            throw new RuntimeException(operationDescription + ": glError " + error);
        }
    }
}