English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод создания Activity с помощью GLSurfaceView на основе OpenGL в Android

Этот пример рассказывает о методе создания Activity на основе OpenGL GLSurfaceView в Android. Делимся этим с вами в надежде, что это будет полезно, подробности см. ниже:

Android предоставляет два основных класса для использования OpenGL ES API для создания и манипулирования графическими объектами: GLSurfaceView и GLSurfaceView.Renderer. Таким образом, нам, в первую очередь, нужно понять эти два класса.

1. GLSurfaceView:

Это класс-представление, в котором можно использовать OpenGL API для рисования графиков и манипулирования объектами, функционально схож с SurfaceView. Мы можем создать экземпляр класса GLSurfaceView и добавить свой рендерер. Если мы хотим реализовать некоторые операции с сенсорным экраном, мы должны расширить этот класс для реализации слушателя касаний.

2. GLSurfaceView.Renderer

Этот интерфейс определяет методы, необходимые для рисования графиков в OpenGL GLSurfaceView. Мы должны предоставить реализацию для этих интерфейсов в отдельном классе и использовать метод GLSurfaceView.setRenderer(), чтобы привязать его к экземпляру объекта GLSurfaceView.

Мы должны реализовать следующие методы GLSurfaceView.Renderer:

a) onSurfaceCreated(): Система вызывается этим методом один раз при создании GLSurfaceView. Мы можем использовать его для установки переменных окружения OpenGL или инициализации графических объектов OpenGL.

b) onDrawFrame(): Система вызывает этот метод каждый раз при перерисовке GLSurfaceView. Этот метод主要负责绘制图形的操作。

c) onSurfaceChanged(): Система вызывается этим методом при изменении геометрических свойств GLSurfaceView, включая размер или направленность экрана устройства. Например, система вызывает его, когда экран изменяется с вертикального на горизонтальный. Этот метод主要用于 phản hồi các thay đổi trong容器的 GLSurfaceView.

Шаги эксперимента

1. Добавить новый проект

2. Добавить новый класс myGLRenderer, реализующий интерфейс GLSurfaceView.Renderer

Код таков:

public class myGLRenderer implements Renderer {
  @Override
  public void onDrawFrame(GL10 gl) {
    // TODO Автоматически сгенерированный метод
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // Очистить кэш
  {}
  @Override
  public void onSurfaceChanged(GL10 gl, int width, int height) {
    // TODO Автоматически сгенерированный метод
    gl.glViewport(0, 0, width, height); // Установить порцию просмотра
  {}
  @Override
  public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    // TODO Автоматически сгенерированный метод
    gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); // Установить цвет очистки
  {}
{}

3. Добавить новый класс myGLSurfaceView, класс-предок GLSurfaceView

Код таков:

public class myGLSurfaceView extends GLSurfaceView {
  public myGLSurfaceView(Context context) {
    super(context);
    // TODO Автоматически сгенерированный конструктор
    mrender = new myGLRenderer();
    setRenderer(mrender);
  {}
  private myGLRenderer mrender;
{}

4. Основной код программы таков:

public class HelloOpenGLActivity extends Activity {
  /** Вызвано при первом создании активности. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGLSurfaceView = new myGLSurfaceView(this);
    setContentView(mGLSurfaceView); // Здесь мы используем mGLSurfaceView для замены ранее используемого R.layout.main
  {}
  private myGLSurfaceView mGLSurfaceView;
{}

Таким образом, мы завершили приложение для рисования серого фона с использованием OpenGL. Это, конечно, самая базовая функция. В будущем мы будем вместе исследовать, как рисовать простые геометрические фигуры с использованием OpenGL.

Для тех, кто интересуется дополнительной информацией по теме Android, можно ознакомиться с темами на нашем сайте: "Суммарные навыки работы с activity в Android", "Суммарные навыки работы с View в Android", "Суммарные навыки работы с SQLite в Android", "Суммарные навыки работы с json-данными в Android", "Суммарные навыки работы с базами данных в Android", "Обзор навыков работы с файлами в Android", "Методы работы с SD-картой в Android", "Введение и продвинутый курс по разработке Android", "Суммарные навыки работы с ресурсами в Android" и "Суммарные навыки работы с контроллерами в Android".

Надеюсь, что изложенное в этой статье поможет вам в разработке Android-приложений.

Заявление: содержимое статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент был自发но предложен и загружен пользователями Интернета, сайт не имеет права собственности на него, не производил ручную редактуру и не несет ответственности за него. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. При обнаружении факта нарушения мы немедленно удалим涉嫌侵权的内容.

Основной учебник
Вам может понравиться