GL_INVALID_OPERATION en glBufferData () en kotlin

Actualmente estoy creando un juego en Kotlin con OpenGL a través de LWJGL (para aprender Kotlin). Creé una class que representa un VBO, que se ve así:

package de.pascal_riesinger.Testing.gfx import de.pascal_riesinger.Testing.Log import de.pascal_riesinger.Testing.LogLevel import de.pascal_riesinger.Testing.logGLError import org.lwjgl.opengl.GL15 import java.nio.FloatBuffer class VBO() { private var id: Int = 0 init { Log(LogLevel.DEBUG, "VBO", "Allocating new VBO") id = GL15.glGenBuffers() Log(LogLevel.DEBUG, "VBO", "Allocated VBO with id $id") } fun bufferData(data: FloatBuffer, usage: Int) { bind() GL15.glBufferData(id, data, usage) unbind() } fun bind() { GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, id) } fun unbind() { GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0) } } 

Sí, sé que este código no es tan hermoso, pero sigo siendo muy nuevo en los conceptos de Kotlin. Ahora cuando ejecuto el siguiente fragment de código:

  var vbo = VBO() var vertexBuffer = BufferUtils.createFloatBuffer(6) vertexBuffer.put(vertices) vertexBuffer.flip() //vbo.bind() vbo.bufferData(vertexBuffer, GL15.GL_STATIC_DRAW) 

GL_INVALID_OPERATION un error OpenGL 1282, que es GL_INVALID_OPERATION justo después de la llamada a glBufferData() .

Busqué el error en Google y según la especificación OpenGL, glBufferData() arrojó glBufferData() solo en los dos casos siguientes:

BufferData genera un error INVALID_OPERATION si zero está destinado a destino.

Se genera un error INVALID_OPERATION si el indicador BUFFER_IMMUTABLE_STORAGE del object de almacenamiento intermedio es VERDADERO.

El último no puede ser el caso, ya que mi buffer no es inmutable, y verifiqué que el ID generado del buffer no es cero (parece ser siempre uno).

Tenga en count que al descomentar la línea vbo.bind() no se corrige esto.

¡Gracias por tu ayuda!

    El primer parámetro de GL15.glBufferData debe ser un objective (en su caso GL15.GL_ARRAY_BUFFER ), no el controller del búfer.