注释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设置后运行应用程序,但它们没有任何区别,因此我将其恢复为默认值。如果有人想知道,没有"布局边界"显示为正方形或三角形。
我也试过切换背景颜色,看看它是不是只绘制了一个,但没有做任何事。
答案 0 :(得分:0)
我最终继续在我的Nexus7上进行开发,当我进一步开发时,我将它闪现在我的Note II中,它再次起作用!如果需要,您可以在此处使用我的代码:stable commit, code for that commit
将其设置为社区维基,如果有人追踪原始问题,请随时将其添加到此处。
答案 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);
}
}
}