2017-01-02 4 views
-3

Wie würde ich eine Textur auf ein Dreieck anwenden? Nur eine grundlegende Zusammenfassung, wie es geht, wird es tun. Ich weiß bereits, wie man einen zu einem Quadrat zieht, also wie anders wäre es für ein Dreieck. Ich benutze Android BTW.OpenGL 2.0 Wie man Textur auf Dreieck anwendet?

Danke

Antwort

0

Nun, es gibt eigentlich überhaupt keinen Unterschied. Ein Rechteck besteht aus zwei Dreiecken. Was Sie also fragen, ist dasselbe wie das Zeichnen der Hälfte des Rechtecks, wo Sie bereits wissen, wie man ein ganzes Rechteck zeichnet.

Die meisten Objekte in OpenGL sind nur mit Dreiecken gezeichnet. Die Textur auf ihnen wird durch die Texturkoordinaten definiert und das Bild, aus dem die Textur geladen wird, kann sehr seltsam sein. Versuchen Sie, die Web-Bilder nach "Model-Textur" zu durchsuchen, um zu sehen, was ich meine.

Der Grund, warum ich dies zu erklären ist, weil ich glaube, dass Sie über die Textur beginnen müssen denken und die Koordinaten umgekehrt, wie Sie es jetzt tun. Die Texturkoordinaten sind eigentlich nur relative Positionen auf der Textur, die darstellen, welcher Teil der Textur zwischen den Punkten gezeichnet werden soll, an die die Form gebunden ist. So wird die Textur für ein Rechteck höchstwahrscheinlich wie ein einfaches Bild aussehen, da das einfache Bild bereits ein Rechteck ist. Für eine Kugel zum Beispiel wird die Textur schon ziemlich seltsam aussehen, da Sie irgendwie alle Punkte auf der Kugel auf einer 2d Oberfläche, normalerweise einem Rechteck, darstellen müssen.

Um ein texturiertes Dreieck zu zeichnen, benötigen Sie Positionskoordinaten und Texturkoordinaten. Ein sehr einfaches Beispiel kann sein:

float vertexData[] = { 
0.0, 0.0, 0.0, 
0.0, 0.0, 
100.0, 0.0, 0.0, 
1.0, 0.0, 
0.0, 100.0, 0.0, 
0.0, 1.0 
}; 

Und dies ist das gleiche wie für das Rechteck aber fehlt die letzte Koordinate:

100.0, 100.0, 0.0, 
1.0, 1.0 

Noch diese Texturkoordinaten alles sein können Sie für Ihre Textur wollen. Sie müssen lediglich die relative Koordinatenposition der Textur berechnen.