Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //renderer
- package com.stuff.vitali.rubicscubeopengl
- import android.content.Context
- import android.opengl.GLES20.*
- import android.opengl.GLSurfaceView
- import android.util.Log
- import java.nio.ByteBuffer
- import java.nio.ByteOrder
- import javax.microedition.khronos.egl.EGLConfig
- import javax.microedition.khronos.opengles.GL10
- class MyRenderer(val context: Context) : GLSurfaceView.Renderer {
- private var shaderProgramId: Int? = null
- private var colorUniformLocation: Int? = null
- private var positionAttrLocation: Int? = null
- companion object{
- const val TAG = "MY_RENDERER_TAG"
- }
- override fun onSurfaceCreated(unused: GL10?, config: EGLConfig?) {
- glClearColor(0f, 0f, 0f, 1f)
- val vertShader = ShaderUtils.createShader(context, GL_VERTEX_SHADER, R.raw.vertex_shader)
- val fragShader = ShaderUtils.createShader(context, GL_FRAGMENT_SHADER, R.raw.fragment_shader)
- shaderProgramId = ShaderUtils.createProgramm(vertShader, fragShader)
- Log.d(TAG, "After creating programm")
- glUseProgram(shaderProgramId!!)
- Log.d(TAG, "After using shader")
- val vertices = floatArrayOf(-0.5f, -0.2f, 0.0f, 0.2f, -0.5f, -0.2f)
- val vertexData = ByteBuffer.allocateDirect(vertices.size * 4).order(ByteOrder.nativeOrder()).asFloatBuffer()
- vertexData.put(vertices)
- colorUniformLocation = glGetUniformLocation(shaderProgramId!!, "fr_Color")
- glUniform4f(colorUniformLocation!!, 0f, 0f, 1f, 1f)
- positionAttrLocation = glGetAttribLocation(shaderProgramId!!, "v_position")
- vertexData.position(0)
- glVertexAttribPointer(positionAttrLocation!!, 2, GL_FLOAT, false, 0, vertexData)
- glEnableVertexAttribArray(positionAttrLocation!!)
- }
- override fun onDrawFrame(unused: GL10?) {
- glClear(GL_COLOR_BUFFER_BIT)
- glDrawArrays(GL_TRIANGLES, 0, 3)
- }
- override fun onSurfaceChanged(unused: GL10?, width: Int, height: Int) {
- glViewport(0, 0, width, height)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement