Bezeichnung
glu.Build3DMipmaps -- erstellt eine 3D-Mipmap
Übersicht
error = glu.Build3DMipmaps(ifmt, width, height, depth, fmt, type, data)
Beschreibung
glu.Build3DMipmaps() erstellt eine Reihe von vorgefilterten 3D-Texturkarten mit abnehmender Auflösung, genannt Mipmap. Dies wird für das Antialiasing von texturierten Grundmuster verwendet.

Ein Rückgabewert von Null bedeutet Erfolg, ansonsten wird ein GLU-Fehlercode zurückgegeben. Siehe glu.ErrorString für Details.

Zuerst werden die width, height und depth der Daten überprüft, um festzustellen, ob sie eine Potenz von 2 haben. Andernfalls wird eine Kopie der Daten erstellt und auf die nächstgelegene Potenz von 2 hoch- oder herunterskaliert (wenn width, height und depth genau zwischen 2 liegt, dann wird die Kopie der Daten nach oben skaliert). Diese Kopie wird für nachfolgenden beschriebene Mipmapping-Vorgänge verwendet. Wenn zum Beispiel die Breite 57, die Höhe 23 und die Tiefe 24 ist, dann skaliert eine Kopie der Daten bis zu 64 in der Breite, bis zu 16 in der Höhe und bis zu 32 in der Tiefe, bevor das Mipmapping stattfindet.

Anschließend werden Proxy-Texturen (siehe gl.TexImage3D()) verwendet, um festzustellen, ob die Implementierung zur gewünschten Textur passen kann. Wenn nicht, werden alle drei Dimensionen kontinuierlich halbiert, bis sie passen.

Als nächstes wird eine Reihe von Mipmap-Ebenen aufgebaut, indem eine Kopie der Daten in der Hälfte entlang aller drei Dimensionen dezimiert wird, bis die Größe 1x1x1 erreicht ist. Auf jeder Ebene ist jedes Texel in der halbierten Mipmap-Ebene ein Durchschnitt der entsprechenden acht Texel in der größeren Mipmap-Ebene. (Wenn genau eine der Dimensionen 1 ist, werden vier Texel gemittelt. Wenn genau zwei der Dimensionen 1 sind, werden zwei Texel gemittelt.)

gl.TexImage3D() wird aufgerufen, um jede dieser Mipmap-Ebenen zu laden. Level 0 ist eine Kopie von Daten. Die höchste Ebene ist log2(max(width,height,depth)). Wenn beispielsweise width 64, height 16 und depth 32 ist und die Implementierung eine Textur dieser Größe speichern kann, werden folgende Mipmap-Level aufgebaut: 64x16x32, 32x8x16, 16x4x8, 8x2x4, 4x1x2, 2x1x1 und 1x1x1. Diese entsprechen den Stufen 0 bis 6.

ifmt gibt das interne Format des Texturbildes an. Siehe Interne Pixelformate für Details. Dies kann auch einer der Sonderwerte 1, 2, 3 oder 4 sein.

fmt muss eine der folgenden Konstanten sein: #GL_COLOR_INDEX, #GL_RED, #GL_GREEN, #GL_BLUE, #GL_ALPHA, #GL_RGB, #GL_RGBA, #GL_LUMINANCE oder #GL_LUMINANCE_ALPHA.

type muss eine der folgenden sein: #GL_UNSIGNED_BYTE, #GL_BYTE, #GL_BITMAP, #GL_UNSIGNED_SHORT, #GL_SHORT, #GL_UNSIGNED_INT, #GL_INT oder #GL_FLOAT.

Bitte beachten Sie, dass dieser Befehl direkt mit Speicherzeigern arbeitet. Siehe Mit Zeigern arbeiten für Einzelheiten zur Verwendung von Speicherzeigern mit Hollywood.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
ifmt
gibt das interne Format der Textur an; muss eine der Pixelformatkonstanten sein (siehe oben)
width
gibt die Breite des Texturbildes an
height
gibt die Höhe des Texturbildes an
depth
gibt die Tiefe des Texturbildes an
fmt
gibt das Format der Pixeldaten an (siehe oben)
type
gibt den Datentyp für pixels an (siehe oben)
data
gibt einen Zeiger auf die Bilddaten im Speicher an
Rückgabewerte
error
Fehlercode oder 0 für den Erfolg

Navigation zeigen