实现GLSurfaceView.Renderer问题

Kir*_*kus 15 android opengl-es-2.0

代码源自本教程

我正在为Android系统开始一些OpenGL-ES 2.0.我从以下代码中获取:http://developer.android.com/training/graphics/opengl/environment.html#renderer

public class MyRenderer implements GLSurfaceView.Renderer {
    public void onSurfaceCreated(GL10 unused, EGLConfig config) {
        GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
    }

    public void onDrawFrame(GL10 unused) {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
    }

    public void onSurfaceChanged(GL10 unused, int width, int height) {
        GLES20.glViewport(0, 0, width, height);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Gradle:错误:MyRenderer不是抽象的,并且不会覆盖Renderer中的抽象方法onSurfaceCreated(GL10,EGLConfig)

有谁知道怎么办?我需要使用MyRenderer类传递给它GLSurfaceView,所以简单地声明它抽象不是一个可行的解决方案.有人可以解释我的问题吗?

Kir*_*kus 45

找到了问题!

导入的不正确版本看起来像这样

import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.EGLConfig;

import javax.microedition.khronos.opengles.GL10;
Run Code Online (Sandbox Code Playgroud)

但是GLSurfaceView.RendererEGLConfigjavax图书馆来

以下代码是导入的正确版本

import android.opengl.GLES20;
import android.opengl.GLSurfaceView;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
Run Code Online (Sandbox Code Playgroud)

在查看接口实现后我发现了这一点

public static interface Renderer {
    void onSurfaceCreated(javax.microedition.khronos.opengles.GL10 gl10, javax.microedition.khronos.egl.EGLConfig eglConfig);

    void onSurfaceChanged(javax.microedition.khronos.opengles.GL10 gl10, int i, int i1);

    void onDrawFrame(javax.microedition.khronos.opengles.GL10 gl10);
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我真的希望他们的文件包括进口。这烧了我很多次。很烦人。 (2认同)