android - 实现 GLSurfaceView.Renderer 问题

标签 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);
    }
}

我收到以下错误

Gradle: error: MyRenderer is not abstract and does not override abstract method onSurfaceCreated(GL10,EGLConfig) in Renderer

有谁知道如何进行?我需要使用 MyRenderer 类来传递给 GLSurfaceView,所以简单地声明它是抽象的不是一个可行的解决方案。有人能解释一下我的问题吗?

最佳答案

发现问题!

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

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

import javax.microedition.khronos.opengles.GL10;

但是 GLSurfaceView.Renderer 想要 javax 库中的 EGLConfig

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

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

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

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

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);
}

关于android - 实现 GLSurfaceView.Renderer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553920/

相关文章:

android - 如何在此动画后休息/初始状态 View ?

android - OpenGL ES 2.0 中的等 ionic 着色器性能

c - 纹理四边形(三角形带)OpenGL ES 2.0

c++ - 正确删除EGL Opengles 2.0

android - 准备失败 : -1 media recorder in android

android - Intent.putExtra(键,值)不起作用

Android ListView - 从右侧滑动 subview ?

android - 滚动功能

graphics - 使用 glBindAttribLocation 会提高性能吗?

java - OpenGL ES 2.0 只绘制一次对象