English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Этот пример рассказывает о методе создания 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 (во время отправки письма замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. При обнаружении факта нарушения мы немедленно удалим涉嫌侵权的内容.