Ich mache ein 2D-Spiel mit OpenGL. Ich möchte meine Texturzeichnung mit VBOs beschleunigen.OpenGL schnelle Texturzeichnung mit Vertex-Puffer-Objekten. Ist das der Weg, es zu tun?
Derzeit verwende ich den Sofort-Modus. Ich erzeuge meine eigenen Koordinaten, wenn ich eine Textur rotiere und skaliere. Ich habe auch die Funktionalität, die Ecken einer Textur zu runden, indem ich das Polygongrundelement verwende, um diese zu zeichnen.
Ich dachte, wäre es am schnellsten, einen VBO mit Vertices für die Seiten der Textur ohne Offset zu machen, so kann ich dann glTranslate, glScale und glRotate verwenden, um die Zeichenposition für meine Textur zu verschieben. Dann kann ich denselben VBO ohne Änderungen verwenden, um die Textur jedes Mal zu zeichnen. Ich konnte nur die VBO ändern, wenn ich die Koordinaten für die abgerundeten Ecken hinzufügen muss.
Ist das der beste Weg, dies zu tun? Auf welche Dinge sollte ich achten? Ist es in modernen Grafikkarten am schnellsten, GL_TRIANGLES statt GL_QUADS zu verwenden?
Vielen Dank für jede Antwort.
Vielen Dank. Ich habe es geschafft, VBOS für einige Liniencode, aber nicht für die Texturzeichnung arbeiten zu lassen. Ich habe keine Ahnung, wie es geht. Alles, was ich versuchte, scheiterte. Ich denke, ich brauche eine andere Frage. –
Sehen Sie Ihre Objekte dort, wo Sie sie haben möchten? Ist es nur die unkorrekte Texturierung Ihrer Modelle? Wenn Sie Ihre Objekte an der richtigen Position sehen, denken Sie daran, dass Texturkoordinatenwerte genau wie Eckpunktpositionswerte sind. Beginnen Sie mit etwas Einfachem (ändern Sie nicht die Texturkoordinaten mit glTranslate usw. im Texturmatrix-Modus) und versuchen Sie dann, es zu erweitern, um das zu erreichen, was Sie letztendlich sehen möchten. – AdilYalcin
Bei der aktuellen Rendering ist es an der richtigen Stelle, es wird nur nicht richtig gerendert. Es schlägt für GL_QUADS und GL_TRIANGLES fehl. Ich werde eine neue Frage mit meinem VBO-Code stellen. Ist das Hinzufügen von Farbinformationen zum VBO wichtig? Wird "glColor" zu einem großen Problem? Vielen Dank für Ihre Antwort und Hilfe. –