Frage

Was ich tun möchte, ist ein (großes) Terrain mit OpenGL Zeichnung. So habe ich eine Menge von Knoten, sagen wir mal 256 x 256, die ich speichern in einem Eckpunktpufferspeicher Objekt im VRAM. Ich triangulierter sie richtig, so dass ich einen Indexpuffer für die Gesichter haben.

// vertexes
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferId);
glVertexPointer(3, GL_FLOAT, 0, 0);
// textures
glBindBufferARB(GL_ARRAY_BUFFER_ARB, texCoordBufferId);
glTexCoordPointer(2, GL_FLOAT, 0, 0);
// indexes
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexBufferId);
// draw it
glDrawRangeElements(GL11.TRIANGLES, 0, size - 1, size, GL_UNSIGNED_INT, 0);

Ich lud auch eine quadratische Struktur, die auf jedes Dreieck aufgebracht werden muss. Also habe ich ein Problem mit der Textur coords bekam:

Jeder Knoten ist in vier Dreiecke enthalten, die es braucht 4 Textur coords bedeutet. Aber glDrawRangeElements () erfordert so viel Textur coords als Scheitel.

So kann ich das nicht so sehen, wie dies mit dem VBOs zu tun. Vielleicht besseres Konzept gibt es mein Problem zu lösen oder ich bin nur eine gute Idee fehlt.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Wenn Sie Ihre Textur wiederholen sollte (oder Spiegel) sich in jedem Quad ist der beste Weg wäre Texturkoordinaten zu verwenden, die die Anzahl der (x, y) Position im Array entsprechen. Z.B. für die erste Zeile der Scheitelpunkte verwenden, um diese Texturkoordinaten:. (0.0, 0.0), (1.0, 0.0), (2.0, 0.0) ... (255,0, 0,0)

Andere Tipps

Wie Sie wahrscheinlich Ihre Textur nahtlos Fliese wollen, alles was Sie brauchen, ist die richtige Textur-Koordinate für jeden Scheitelpunkt zu berechnen, und geben sie genau wie die Eckpunkte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top