error = glu.Build2DMipmaps(iformat, width, height, format, type, pixels)
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.
pixels
an (siehe oben)