Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(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''' gleaden wird, muss anstelle von '''TBitmap TPicture''' verwendet werden.<br>
+
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

Lazarus - OpenGL 3.3 Tutorial - Texturen - Texturen von XPM.png

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