Seite 1 von 1

SharpGL Textur Zeichnen

Verfasst: 18.06.2014, 17:43
von Andy16823
Hallo Commnity, ich bin neu hier im Forum. Ich habe mit OpenGL bzw. SharpGL begonnen. Nun würde ich gerne eine Textur zeichen. Leider fehlt mir der Ansatz.

Grüße Andy

Re: SharpGL Textur Zeichnen

Verfasst: 18.06.2014, 18:17
von Schrompf
(Frei geraten, ich kenne nur DirectX)

Erstelle ein Vertex Buffer Object mit vier Vertices. In jedem Vertex gibst Du nun zusätzlich zur Position noch zwei floats Texturkoordinaten an. Texturkoordinaten geben den Punkt auf der Textur an, den der Vertex erreicht. Bei OpenGL ist dann jeweils der erste Float die X-Koordinate, der geht auf der Texturgrafik links bei 0.0f los und geht bis zum rechten Rand mit 1.0f. Der zweite float ist y, der beginnt am unteren Rand mit 0.0f und geht bis zum oberen Rand mit 1.0f. Du gibst also einem Vertex die Texturkoordinate links oben, dem nächsten rechts oben usw.

Dann baust Du aus diesen vier Vertices ganz normal zwei Dreiecke und zeichnest die. Dein Fragment Shader muss dann natürlich erweitert werden, so dass er die Texturkoordinaten vom Vertex Shader bekommt und mit diesen Texturkoordinaten aus einer Textur samplet.

Re: SharpGL Textur Zeichnen

Verfasst: 18.06.2014, 18:59
von Andy16823
Danke für deine Antwort. ich habe es Teilweise hin bekommen. Das Ganze geht mit SharpGL eigendlich sehr einfach:

1. Texture Klasse erstellen

Code: Alles auswählen

SharpGL.SceneGraph.Assets.Texture text = new SharpGL.SceneGraph.Assets.Texture();
2. Texture Laden

Code: Alles auswählen

text.Create(gl, Properties.Resources.Grass0059_5_S);
3. Texture2D Aktivieren

Code: Alles auswählen

gl.Enable(OpenGL.GL_TEXTURE_2D);
4. Texture Binden

Code: Alles auswählen

text.Bind(gl);
5. Texturkoordinaten für ein Vertex festlegen

Code: Alles auswählen

gl.Begin(OpenGL.GL_POLYGON);
gl.TexCoord(0.0f, 1.0f);
gl.Vertex(-2.0f, 0.0f, 0f);
gl.TexCoord(0.0f, 1.0f);
gl.Vertex(2.0f, 0.0f, 0.0f);
gl.TexCoord(0.0f, 1.0f);
gl.Vertex(0.0f, 2.5f, 0.0f);
gl.End();

Leider habe ich als Ergebnis nur die Farbe der Textur Bekommen, ich denke aber, das liegt daran das ich ein Fehler bei den TextCoord gemacht habe, oder da die Textur ziemlich groß ist.

Re: SharpGL Textur Zeichnen

Verfasst: 19.06.2014, 00:48
von DerAlbi
...du übergibst auch 3x die gleiche Texturkoordinate. ;-)