Hilfe

CreateTexture

B3D

Aufruf

textur% = CreateTexture (breite%, hoehe% [, modus%] [, frames%])

Parameter

breite% Breite der Textur in Pixel
hoehe% Höhe der Textur in Pixel
modus% Optionale Textur-Einstellungen:
+1=Color
+2=Alpha
+4=Masked
+8=Mipmapped
+16=Clamp U
+32=Clamp V
+64=Spherical Reflection Map
+128=Cubic Environment Mapping
+256=Speichert Textur in VRAM
+512=HighColor-Textur
frames% Anzahl der Einzelbilder bei animierten Texturen (min 1)


Rückgabewert

Es wird die Identität der Textur zurückgeliefert.


Beschreibung

Der Befehl CreateTexture erstellt eine Textur im Speicher und liefert die Identität der Textur zurück.

Die Breite und Höhe in Pixel beschreiben die Größe der Textur. Beachte, dass die aktuelle Texturgröße anders sein kann als die benötigte Größe, da Grafikkarten unterschiedliche Texturgrößen verarbeiten können.

Der optionale Parameter "modus%" stellt Textureffekte ein. Mehrere Effekte können kombiniert werden, indem die Zahlen addiert werden.

Hier eine kurze Beschreibung:
[1] Color Map = Die Textur wird so eingezeichnet wie man die sieht
[2] Alpha Map = Die Textur benutzt Alpha Map für Transparenz. Wenn Alpha Map nicht vorhanden ist, dann erscheinen dunkle Stellen transparenter.*
[4] Masked = Schwarze Flächen werden nicht eingezeichnet.
[8] Mipmapped = für weite Entfernungen wird eine Textur mit weniger Details benutzt.
[16] Clamp U = Textur-Koordinate U wird fixiert.
[32] Clamp V = Textur-Koordinate V wird fixiert.
[64] Spherical Reflection Map = Reflektionseffekt
[128] Cubic Environment Mapping = Echtzeitreflektion
[256] Speichert Textur in VRAM = schneller
[512] Erstellt HighColor-Textur. So kann die Textur auch bei 16-Bit Farbtiefe weiterhin Alpha-Informationen enthalten.

Nachdem eine Textur erstellt wurde, sollten die Befehle SetBuffer TextureBuffer benutzt werden, um die Textur mit Inhalt zu füllen. Sollen 3D-Grafiken dargestellt werden, dann muss man einen Ausschnitt von BackBuffer in eine Textur kopieren.

*Mit aktuellen Treibern kann es auf allen Windows Versionen zu Fehlern mit dem Modus "2" kommen. Es wird dringend empfohlen diesen Modus zu meiden.


Die Grafikkarte kann nur Texturen mit einer Breite/Höhe von einer 2er-Potenz verarbeiten (also z.B. 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 usw.). Wurde eine andere Texturgröße angegeben, dann wird es von BlitzBasic automatisch korrigiert. Dies bedeutet dann:
- Geschwindigkeitsverlust
- Unnötiger Speicherverbrauch



Zusatzinformation

Wenn eine Textur mit Flag 2 (Alpha) geladen wird, kommt es zu Problemen mit dem Z-Buffer. Die Texturen werden nicht mehr nach Kameraentfernung gezeichnet, sondern in der Erstellreihenfolge, wodurch eigentlich verdeckte Texturen sichtbar seien können.


Beispiel

Standardbeispiel:

Graphics3D 640, 480
SetBuffer BackBuffer()
camera = CreateCamera()
light = CreateLight()
RotateEntity light, 90, 0, 0
cube = CreateCube()
PositionEntity cube, 0, 0, 5
tex = CreateTexture(256, 256)

SetBuffer TextureBuffer(tex)
ClsColor 255, 255, 255
Cls
font = LoadFont("arial", 24)
SetFont font
Color 0, 0, 0
Text 0, 0, "Diese Textur"
Text 0, 40, "wurde erstellt mit"
Color 0, 0, 255
Text 0, 80, "CREATETEXTURE()"
Color 0, 0, 0
Text 0, 120, "und eingezeichnet mit"
Color 0, 0, 255
Text 0, 160, "SETBUFFER TEXTUREBUFFER()"
EntityTexture cube, tex
SetBuffer BackBuffer()

While Not KeyHit(1)
   pitch# = 0
   yaw# = 0
   roll# = 0
   If KeyDown(208) = 1 Then pitch# = - 1
   If KeyDown(200) = 1 Then pitch# = 1
   If KeyDown(203) = 1 Then yaw# = - 1
   If KeyDown(205) = 1 Then yaw# = 1
   If KeyDown(45) = 1 Then roll# = - 1
   If KeyDown(44) = 1 Then roll# = 1
   TurnEntity cube, pitch#, yaw#, roll#
   RenderWorld
   Text 0, 0, "Drehe den Würfel mit Cursortasten" Flip
Wend
End


Siehe auch

FreeTexture, LoadAnimTexture, LoadTexture, RotateTexture, ScaleTexture, TextureBlend, TextureBuffer, TextureHeight, TextureWidth

Übersicht 3D Grafik Texturen