/
am98pln
/
AndroidOpenGLESExample
Обзор
Документация
Войти
/
am98pln
/
AndroidOpenGLESExample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Triangle/app/src/main/java/com/example/openglesdemo/MyGLRenderer.kt
65 строк
2 KB
Leonid Pakholkov
Fixed package's name and application's name for examples
12 янв 2026, 12:23
12 янв 2026, 12:23
d98e9af
Код
Авторство
О чём код?
package com.example.openglestriangle import android.opengl.GLES20 import android.opengl.GLSurfaceView import android.opengl.Matrix import javax.microedition.khronos.egl.EGLConfig import javax.microedition.khronos.opengles.GL10 class MyGLRenderer : GLSurfaceView.Renderer { private val mvpMatrix = FloatArray(16) private val projectionMatrix = FloatArray(16) private val viewMatrix = FloatArray(16) private val rotationMatrix = FloatArray(16) private var triangle: Triangle? = null private var angle = 0f override fun onSurfaceCreated(gl: GL10?, config: EGLConfig?) { // Устанавливаем цвет фона (черный) GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f) // Инициализируем треугольник triangle = Triangle() } override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) { // Устанавливаем область просмотра GLES20.glViewport(0, 0, width, height) val ratio = width.toFloat() / height.toFloat() // Создаем матрицу проекции Matrix.frustumM(projectionMatrix, 0, -ratio, ratio, -1f, 1f, 3f, 7f) } override fun onDrawFrame(gl: GL10?) { val scratch = FloatArray(16) // Очищаем экран и буфер глубины GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT or GLES20.GL_DEPTH_BUFFER_BIT) // Устанавливаем позицию камеры Matrix.setLookAtM(viewMatrix, 0, 0f, 0f, -3f, // eye 0f, 0f, 0f, // center 0f, 1f, 0f // up ) // Вычисляем матрицу вида-проекции Matrix.multiplyMM(mvpMatrix, 0, projectionMatrix, 0, viewMatrix, 0) // Создаем матрицу вращения val time = System.currentTimeMillis() % 10000L angle = (360.0f / 10000.0f) * time.toInt() Matrix.setRotateM(rotationMatrix, 0, angle, 0f, 0f, 1.0f) // Применяем вращение к матрице Matrix.multiplyMM(scratch, 0, mvpMatrix, 0, rotationMatrix, 0) // Отрисовываем треугольник triangle?.draw(scratch) } }