Подтвердить что ты не робот

Реализация проблем GLSurfaceView.Renderer

Код, полученный из учебника

Я запускаю несколько OpenGL-ES 2.0 для системы Android. Я взял следующий код: 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: ошибка: MyRenderer не является абстрактным и не переопределяет абстрактный метод onSurfaceCreated (GL10, EGLConfig) в Renderer

Кто-нибудь знает, как действовать? Мне нужно использовать класс MyRenderer для перехода к GLSurfaceView, поэтому просто объявить его абстрактным не является жизнеспособным решением. Может ли кто-нибудь пролить свет на мою проблему?

4b9b3361

Ответ 1

Обнаружена проблема!

Версия импорта Неверная выглядела так:

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

import javax.microedition.khronos.opengles.GL10;

Но GLSurfaceView.Renderer хотел EGLConfig из библиотеки javax

Следующий код - это версия Корректная импорта

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

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

Я обнаружил это, посмотрев на реализацию интерфейса

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