Grüße,
Zur Zeit beschäftige ich mit VBOs aber ich komme nicht besonders gut zurecht damit. Ich habe mir schon einige Tutorials angeschaut aber nicht gefunden nach was ich gesucht habe.
Meine Situation:
Ich habe Vertex-Daten in floatBuffern gespeichert. Diese möchte ich mit VBOs zeichnen lassen.
Im moment mach ich das so:
Jedes meiner Objekte (sind recht viele 300+) hat folgendes:
Der Buffer wird zwischen den Frames von einem anderen Thread (außerhalb des GL-Contexts) verändert.
Leider ist diese Methode wesentlich langsamer als Immediate-Mode und ich denke ich mache irgendetwas grundlegend falsch. Sollte man nur einen VBO für alle Objekte verwenden? Hab was von VBO-Mapping gelesen, aber auch, dass davon abgraten wird.
Wäre für Hilfe sehr dankbar!
-Luk10-
Zur Zeit beschäftige ich mit VBOs aber ich komme nicht besonders gut zurecht damit. Ich habe mir schon einige Tutorials angeschaut aber nicht gefunden nach was ich gesucht habe.
Meine Situation:
Ich habe Vertex-Daten in floatBuffern gespeichert. Diese möchte ich mit VBOs zeichnen lassen.
Im moment mach ich das so:
Jedes meiner Objekte (sind recht viele 300+) hat folgendes:
Java:
public static final int VERTEX_COUNT = 4;
protected boolean bound;
protected int vboID;
protected FloatBuffer buffer;
protected void bind() {
bound = true;
vboID = glGenBuffers();
executeUpdate();
}
protected void executeUpdate() {
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glBufferData(GL_ARRAY_BUFFER, buffer, GL_STREAM_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
public void draw() {
if (!vboBound) bind();
executeUpdate();
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glVertexPointer(JavEvolve.VERTEXSPACE, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_QUADS, 0, VERTEX_COUNT);
glDisableClientState(GL_VERTEX_ARRAY);
}
Der Buffer wird zwischen den Frames von einem anderen Thread (außerhalb des GL-Contexts) verändert.
Leider ist diese Methode wesentlich langsamer als Immediate-Mode und ich denke ich mache irgendetwas grundlegend falsch. Sollte man nur einen VBO für alle Objekte verwenden? Hab was von VBO-Mapping gelesen, aber auch, dass davon abgraten wird.
Wäre für Hilfe sehr dankbar!
-Luk10-
Zuletzt bearbeitet: