SharpGL Textur Zeichnen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Andy16823
Beiträge: 22
Registriert: 18.06.2014, 17:22

SharpGL Textur Zeichnen

Beitrag 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
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: SharpGL Textur Zeichnen

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Andy16823
Beiträge: 22
Registriert: 18.06.2014, 17:22

Re: SharpGL Textur Zeichnen

Beitrag 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.
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: SharpGL Textur Zeichnen

Beitrag von DerAlbi »

...du übergibst auch 3x die gleiche Texturkoordinate. ;-)
Antworten