设置Android OpenGl ES环境失败

时间:2015-07-25 20:20:58

标签: android opengl-es

我想学习如何使用OpenGL for Android。因此,我按照this指南设置了环境。 我做了他们所说的一切: 我得到了一个OpenGLActivity,它启动了我的MyGLSurfaceView

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    glSurfaceView = new MyGLSurfaceView(this);
    setContentView(R.layout.activity_open_gl);
}

这是我的MyGLSurfaceView

class MyGLSurfaceView extends GLSurfaceView {

private final MyGLRenderer mRenderer;

public MyGLSurfaceView(Context context) {
    super(context);

    // Create an OpenGL ES 2.0 context
    setEGLContextClientVersion(2);

    mRenderer = new MyGLRenderer();

    // Set the Renderer for drawing on the GLSurfaceView
    setRenderer(mRenderer);
}
}

那就是我的MyGLRenderder课程,它应该将背景设置为黑色:

public class MyGLRenderer implements Renderer {

public void onSurfaceCreated(GL10 unused, EGLConfig config) {
    // Set the background frame color
    GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}

public void onDrawFrame(GL10 unused) {
    // Redraw background color
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}

public void onSurfaceChanged(GL10 unused, int width, int height) {
    GLES20.glViewport(0, 0, width, height);
}
}

我已将此行添加到我的AndroidManifest.xml(开头,<application>标记之前)

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

问题是背景不是黑色,是白色。 我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您实际上并未显示您的OpenGL视图。在这里的代码中:

glSurfaceView = new MyGLSurfaceView(this);
setContentView(R.layout.activity_open_gl);

您正在将内容视图设置为布局中的视图,而您没有使用刚刚创建的GLSurfaceView。它应该是:

glSurfaceView = new MyGLSurfaceView(this);
setContentView(glSurfaceView);