gluBuild1DMipmaps: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
Zeile 37: Zeile 37:
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Detaillierte Beschreibung des Befehls
+
'''gluBuild1DMipmaps''' erzeugt eine Reihe von vorgefilterten eindimensionalen Texturmaps mit  kleiner werdenden Auflösungen, genannt Mipmap. Das wird für das [[Antialiasing]] von texturierten Polygonen benutzt.<br>
 +
<br>
 +
Wird '''0''' zurückgeliefert, war der Vorgang erfolgreich, andernfalls wird ein GLU-Fehler erzeugt (siehe [[gluErrorString]]).<br>
 +
<br>
 +
Zuallererst wird überprüft, ob ''width'' vom Typ 2^n (n: Integer) ist. Wenn das nicht der Fall ist, wird eine Kopie von ''data'' (nicht ''data''selbst!) zur nächsten Zahl 2^n verkleinert oder vergrößert. Diese Kopie wird für spätere Mipmapping-Operationen verwendet. (Wenn ''width'' genau zwischen zwei Zahlen vom Typ 2^n und 2^m (n, m: Integer; m=n+1) liegt, dann wird ''width'' vergrößert.) Wenn ''width'' zum Beispiel 57 ist, dann wird eine Kopie von ''data'' auf 64 vergrößert, bevor das Mapmapping durchgeführt wird.<br>
 +
<br>
 +
Anschließend werden Proxy-Texturen (siehe [[glTexImage1D]]) verwendet, um herauszufinden, ob es möglich ist, die angeforderte Textur zu verarbeiten. Wenn nicht, wird ''width'' solange halbiert, bis es möglich ist.<br>
 +
<br>
 +
Als nächstes wird eine Reihe von Mipmap-Leveln erzeugt, indem eine Kopie von ''data'' solange halbiert wird, bis die Größe 1 erreicht ist. Bei jedem Level ist das Texel des halbierten Mipmap-Levels der Durchschnitt des nächstgrößeren Levels.<br>
 +
<br>
 +
[[glTexImage1D]] wird aufgerufen, um jeden dieser Mipmap-Level zu laden. Das Level 0 ist eine Kopie von ''data''. Der höchste Level ist log2(''width''). Ist ''width'' zum Beipiel 64, und die Speicherung einer Textur dieser Größe möglich ist, dann werden folgende Mipmap-Level erzeugt:  64x1, 32x1, 16x1, 8x1, 4x1, 2x1 und 1x1. Dies entspricht dann beispielsweise den Leveln von 0 bis 6.<br>
 +
<br>
 +
Man lese auch die Artikel zu [[glTexImage1D]], um eine Beschreibung der akzeptablen Werte für ''type'' zu erhalten und [[glDrawPixels]], um eine Beschreibung der akzeptablen Werte für ''data'' zu erhalten.
  
 
<br>
 
<br>
 
== Hinweise ==
 
== Hinweise ==
Bitte beachten dass...
+
Man beachte, dass es keinen direkten Weg gibt, das größtmögliche Level herauszufinden. Das kann indirekt durch [[glGetTexLevelParameter]] gemacht werden. Als erstes fragt man dazu die Breite bei Level 0 ab. (Die Breite muss nicht zwangläufig gleich ''width'' sein, da anhand Zwischentexturen vergrößert/verkleinert werden sein konnte.) Dann ist das maximale Level log2(Breite).
 
 
 
<br>
 
<br>
== Erweiterungen ==
 
Folgende Erweiterungen hat die Funktion erfahren:
 
=== Ab OpenGL-Version X.X ===
 
  
hier eine Bschreibung der neuen Konstanten, funktionalitäten etc.
+
== Fehlermeldungen ==
====Siehe Auch====
+
'''GLU_INVALID_VALUE''' wird generiert, wenn ''width'' kleiner als 1 ist.<br>
Link auf Extensionartikel welcher die Erweiterung gebracht hat
 
  
== Fehlermeldungen ==
+
'''GLU_INVALID_ENUM''' wird generiert, wenn ''internalFormat'', ''format'' oder ''type'' keine zulässigen Werte haben.
'''GL_FEHLER''' wird generiert wenn....<br>
 
'''GL_INVALID_OPERATION''' wird generiert wenn FUNCTIONNAME innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
 
  
 
<br>
 
<br>
  
==  Zugehörige Wertrückgaben ==
 
[[glGet]] mit Token [[glGet#GL_MEIN_TOKEN|GL_MEIN_TOKEN]]
 
 
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==
Hier eine Liste (als Medialinks) von Befehlen die diesem ähnlich sind. Bitte alle Begriffe hintereinander und mit einem Komma voneinander trennen.
+
[[glDrawPixels]], [[glTexImage1D]], [[glTexImage2D]], [[gluBuild2DMipmaps]], [[gluErrorString]], [[gluScaleImage]]<br>
 
 
Zum Abschluss noch an diese Stelle den Artikel einer Kategorie zuordnen. z.B.<br>
 
'''<nowiki>[[Kategorie:GL|FuncNameOhneGLamAnfang]]</nowiki>'''
 
  
----
+
[[Kategorie:GLU|Build1DMipmaps]]
Um diese Vorlage direkt zu nutzen, bitte diese Seite bearbeiten und die Vorlage direkt rauskopieren!
 

Version vom 3. September 2005, 11:30 Uhr

gluBuild1DMipmaps


Name

gluBuild1DMipmaps - Erzeugt eine eindimensionale Mipmap


Delphi-Spezifikation

function gluBuild1DMipmaps(target : GLenum; internalFormat : GLint; width : GLsizei; 
format : GLenum; type : GLenum; data : ^Pointer) : GLint


Parameter

target Gibt die Zieltextur an. Muss vom Typ 'GL_TEXTURE_1D sein.
internalFormat Fragt das interne Speicherformat der Textur ab. Muss entweder 1, 2, 3 oder 4 doer eine der folgenden symbolischen Konstanten sein: GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_ALPHA12, GL_ALPHA16, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, GL_LUMINANCE12, GL_LUMINANCE16, GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, GL_LUMINANCE16_ALPHA16, GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, GL_INTENSITY12, GL_INTENSITY16, GL_RGB, GL_R3_G3_B2, GL_RGB4, GL_RGB5, GL_RGB8, GL_RGB10, GL_RGB12, GL_RGB16, GL_RGBA, GL_RGBA2, GL_RGBA4, GL_RGB5_A1, GL_RGBA8, GL_RGB10_A2, GL_RGBA12 oder GL_RGBA16.
width Gibt die Breite der Textur in Pixeln an.
format Gibt das Format der Pixeldaten an. Muss einer der folgenden Werte sein: GL_COLOR_INDEX, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_LUMINANCE und GL_LUMINANCE_ALPHA.
type Gibt den Datentyp von data an. Muss einer der folgenden Werte sein: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT oder GL_FLOAT
data Gibt den Pointer auf die Bilddaten im Speicher an.


Beschreibung

gluBuild1DMipmaps erzeugt eine Reihe von vorgefilterten eindimensionalen Texturmaps mit kleiner werdenden Auflösungen, genannt Mipmap. Das wird für das Antialiasing von texturierten Polygonen benutzt.

Wird 0 zurückgeliefert, war der Vorgang erfolgreich, andernfalls wird ein GLU-Fehler erzeugt (siehe gluErrorString).

Zuallererst wird überprüft, ob width vom Typ 2^n (n: Integer) ist. Wenn das nicht der Fall ist, wird eine Kopie von data (nicht dataselbst!) zur nächsten Zahl 2^n verkleinert oder vergrößert. Diese Kopie wird für spätere Mipmapping-Operationen verwendet. (Wenn width genau zwischen zwei Zahlen vom Typ 2^n und 2^m (n, m: Integer; m=n+1) liegt, dann wird width vergrößert.) Wenn width zum Beispiel 57 ist, dann wird eine Kopie von data auf 64 vergrößert, bevor das Mapmapping durchgeführt wird.

Anschließend werden Proxy-Texturen (siehe glTexImage1D) verwendet, um herauszufinden, ob es möglich ist, die angeforderte Textur zu verarbeiten. Wenn nicht, wird width solange halbiert, bis es möglich ist.

Als nächstes wird eine Reihe von Mipmap-Leveln erzeugt, indem eine Kopie von data solange halbiert wird, bis die Größe 1 erreicht ist. Bei jedem Level ist das Texel des halbierten Mipmap-Levels der Durchschnitt des nächstgrößeren Levels.

glTexImage1D wird aufgerufen, um jeden dieser Mipmap-Level zu laden. Das Level 0 ist eine Kopie von data. Der höchste Level ist log2(width). Ist width zum Beipiel 64, und die Speicherung einer Textur dieser Größe möglich ist, dann werden folgende Mipmap-Level erzeugt: 64x1, 32x1, 16x1, 8x1, 4x1, 2x1 und 1x1. Dies entspricht dann beispielsweise den Leveln von 0 bis 6.

Man lese auch die Artikel zu glTexImage1D, um eine Beschreibung der akzeptablen Werte für type zu erhalten und glDrawPixels, um eine Beschreibung der akzeptablen Werte für data zu erhalten.


Hinweise

Man beachte, dass es keinen direkten Weg gibt, das größtmögliche Level herauszufinden. Das kann indirekt durch glGetTexLevelParameter gemacht werden. Als erstes fragt man dazu die Breite bei Level 0 ab. (Die Breite muss nicht zwangläufig gleich width sein, da anhand Zwischentexturen vergrößert/verkleinert werden sein konnte.) Dann ist das maximale Level log2(Breite).

Fehlermeldungen

GLU_INVALID_VALUE wird generiert, wenn width kleiner als 1 ist.

GLU_INVALID_ENUM wird generiert, wenn internalFormat, format oder type keine zulässigen Werte haben.



Siehe auch

glDrawPixels, glTexImage1D, glTexImage2D, gluBuild2DMipmaps, gluErrorString, gluScaleImage