Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM: Unterschied zwischen den Versionen
Aus DGL Wiki
(Die Seite wurde neu angelegt: „200px<br><br> =Texturen - Texturen von XPM = == Einleitung == Für sehr einfache Text…“) |
|||
Zeile 4: | Zeile 4: | ||
Für sehr einfache Texturen, ist das xpm-Format geeignet. Mit diesem kann man sehr schnell eine einfache Textur mit einem Text-Editor erstellen.<br> | Für sehr einfache Texturen, ist das xpm-Format geeignet. Mit diesem kann man sehr schnell eine einfache Textur mit einem Text-Editor erstellen.<br> | ||
<br><br> | <br><br> | ||
− | Da etwas anderes als '''BMP''' | + | Da etwas anderes als '''BMP''' geladen wird, muss anstelle von '''TBitmap TPicture''' verwendet werden.<br> |
<br> | <br> | ||
Momentan kann TPicture folgende Datei-Formate laden: '''BMP, GIF, JPG, PCX, PNG, P?M, PDS, TGA, TIF, XPM, ICO, CUR, ICNS'''.<br> | Momentan kann TPicture folgende Datei-Formate laden: '''BMP, GIF, JPG, PCX, PNG, P?M, PDS, TGA, TIF, XPM, ICO, CUR, ICNS'''.<br> | ||
Zeile 51: | Zeile 51: | ||
<br><br> | <br><br> | ||
==mauer.xpm:== | ==mauer.xpm:== | ||
− | <syntaxhighlight>/* XPM */ | + | <syntaxhighlight lang="cpp">/* XPM */ |
static char *XPM_mauer[] = { | static char *XPM_mauer[] = { | ||
"8 8 2 1", | "8 8 2 1", |
Version vom 21. Januar 2018, 19:10 Uhr
Inhaltsverzeichnis
Texturen - Texturen von XPM
Einleitung
Für sehr einfache Texturen, ist das xpm-Format geeignet. Mit diesem kann man sehr schnell eine einfache Textur mit einem Text-Editor erstellen.
Da etwas anderes als BMP geladen wird, muss anstelle von TBitmap TPicture verwendet werden.
Momentan kann TPicture folgende Datei-Formate laden: BMP, GIF, JPG, PCX, PNG, P?M, PDS, TGA, TIF, XPM, ICO, CUR, ICNS.
procedure TForm1.InitScene;
var
pic: TPicture;
begin
pic := TPicture.Create; // Picture erzeugen.
with pic do begin
LoadFromFile('mauer.xpm'); // XPM-Datei laden.
Textur.LoadTextures(pic.Bitmap.RawImage); // Bitmap in VRAM laden.
Free; // Picture frei geben.
end;
Vertex-Shader:
#version 330
layout (location = 0) in vec3 inPos; // Vertex-Koordinaten
layout (location = 10) in vec2 inUV; // Textur-Koordinaten
uniform mat4 mat;
out vec2 UV0;
void main(void)
{
gl_Position = mat * vec4(inPos, 1.0);
UV0 = inUV; // Textur-Koordinaten weiterleiten.
}
Fragment-Shader:
#version 330
in vec2 UV0;
uniform sampler2D Sampler; // Der Sampler welchem 0 zugeordnet wird.
out vec4 FragColor;
void main()
{
FragColor = texture( Sampler, UV0 ); // Die Farbe aus der Textur anhand der Koordinten auslesen.
}
mauer.xpm:
/* XPM */
static char *XPM_mauer[] = {
"8 8 2 1",
" c #882222",
"* c #442222",
"********",
"* * ",
"* * ",
"* * ",
"********",
" * * ",
" * * ",
" * * "
};
Autor: Mathias
Siehe auch
- Übersichtseite Lazarus - OpenGL 3.3 Tutorial