私は現在、KotlinでLWJGL経由でOpenGLでゲームを作成しています(Kotlinの学習用)。はい、私はこのコードはその美しいではないことを知っているが、私はまだKotlinの概念に非常に新しいですGLT_INVALID_OPERATION on kotlin
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)
}
}
:私はこのようになりますVBOを表すクラスを作成しました。私は、次のスニペットを実行するとき 今:
var vbo = VBO()
var vertexBuffer = BufferUtils.createFloatBuffer(6)
vertexBuffer.put(vertices)
vertexBuffer.flip()
//vbo.bind()
vbo.bufferData(vertexBuffer, GL15.GL_STATIC_DRAW)
を私は右glBufferData()
を呼び出した後GL_INVALID_OPERATION
であるOpenGLのエラー1282を取得します。
私はエラーのためにGoogleで検索し、OpenGLの仕様ごとに、GL_INVALID_OPERATION
のみ、以下の2つの場合にglBufferData()
によってスローされます。
ゼロがターゲットにバインドされている場合INVALID_OPERATIONエラーがBufferDataによって生成されます。
バッファオブジェクトのBUFFER_IMMUTABLE_STORAGEフラグがTRUEの場合、INVALID_OPERATIONエラーが生成されます。
私のバッファが不変ではないように後者はは、ケースすることができず、私は(必ずしも一つであると思われる)、バッファの生成されたIDがゼロでないことを確認しました。
vbo.bind()
行のコメントを外してもこれが解決されないことに注意してください。
ありがとうございました!
ありがとう、私は今、愚かな感じ:D –