Bezeichnung
glu.Build2DMipmaps -- erstellt eine 2D-Mipmap
Übersicht
error = glu.Build2DMipmaps(iformat, width, height, format, type, pixels)
Beschreibung
glu.Build2DMipmaps() erstellt eine Reihe von vorgefilterten 2D-Texturkarten mit abnehmender Auflösung. Mipmaps können so verwendet werden, dass Texturen nicht aliasiert erscheinen.

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

glu.Build2DMipmaps() prüft zunächst, ob width und height von pixels beide eine Potenzen von 2 haben. glu.Build2DMipmaps() skaliert eine Kopie von pixels auf die nächste Potenz von 2 und dient dann als Basis für nachfolgende Mipmapping-Operationen. Wenn beispielsweise width 57 und height 23 ist, dann skaliert eine Kopie von pixels auf 64 bzw. auf 16, bevor ein Mipmapping stattfindet (wenn width oder height genau zwischen den Potenzen von 2 liegt, wird die Kopie der Daten nach oben skaliert).

Wenn die GL-Version 1.1 oder höher ist, verwendet glu.Build2DMipmaps() dann Proxy-Texturen (siehe gl.TexImage2D()), um festzustellen, ob genügend Platz für die gewünschte Textur in der Implementierung vorhanden ist. Wenn nicht, wird die width halbiert (und wieder halbiert), bis sie passt.

glu.Build2DMipmaps() verwendet dann Proxy-Texturen (siehe gl.TexImage2D()), um zu bestimmen, ob die Implementierung die gewünschte Textur im Texturspeicher speichern kann. Wenn nicht, werden beide Dimensionen kontinuierlich halbiert, bis es passt.

Anschließend erstellt glu.Build2DMipmaps() eine Reihe von Bildern; es halbiert eine Kopie von type (oder eine skalierte Version von type, falls erforderlich) entlang beider Dimensionen, bis die Größe 1x1 erreicht ist. Auf jeder Ebene ist jedes Texel in der halbierten Mipmap ein Durchschnitt der entsprechenden vier Texel in der größeren Mipmap. (Im Falle von rechteckigen Bildern führt die Halbierung der Bilder wiederholt zu einer n*1 oder 1*n Konfiguration. Hier werden stattdessen zwei Texel gemittelt.)

gl.TexImage2D() wird aufgerufen, um jedes dieser Bilder nach Ebenen zu laden. Wenn width und height beide Potenzen von 2 sind, die in die Implementierung passen, ist Ebene 0 eine Kopie von pixels und die höchste Ebene ist log2(max(width, height)). Wenn beispielsweise width 64 und height 16 ist, werden folgende Mipmaps erstellt: 64x16, 32x8, 16x4, 8x2, 4x1, 2x1 und 1x1. Diese entsprechen den Stufen 0 bis 6.

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

format 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. Es gibt auch eine Version, die mit Tabellen anstelle von Speicherzeigern arbeitet, aber das ist natürlich langsamer. Siehe glu.BuildMipmaps für Details. Siehe Mit Zeigern arbeiten für Einzelheiten zur Verwendung von Speicherzeigern mit Hollywood.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
iformat
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
format
gibt das Format der Pixeldaten an (siehe oben)
type
gibt den Datentyp für pixels an (siehe oben)
pixels
gibt einen Zeiger auf die Bilddaten im Speicher an
Rückgabewerte
error
Fehlercode oder 0 für den Erfolg

Navigation zeigen