gluBuild1DMipmaps: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Beschreibung)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= gluBuild1DMipmaps =
 
= gluBuild1DMipmaps =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''gluBuild1DMipmaps''' - Erzeugt eine eindimensionale Mipmap
 
'''gluBuild1DMipmaps''' - Erzeugt eine eindimensionale Mipmap
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  
 
  function '''gluBuild1DMipmaps'''(''target'' : GLenum; ''internalFormat'' : GLint; ''width'' : GLsizei; <br> ''format'' : GLenum; ''type'' :  GLenum; ''data'' : ^Pointer) : GLint
 
  function '''gluBuild1DMipmaps'''(''target'' : GLenum; ''internalFormat'' : GLint; ''width'' : GLsizei; <br> ''format'' : GLenum; ''type'' :  GLenum; ''data'' : ^Pointer) : GLint
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 19: Zeile 22:
 
|-
 
|-
 
! ''internalFormat''  
 
! ''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'''.
+
| Fragt das interne Speicherformat der Textur ab. Muss entweder 1, 2, 3, 4 oder 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''
 
! ''width''
Zeile 25: Zeile 28:
 
|-
 
|-
 
! ''format''
 
! ''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'''.
+
|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''
 
! ''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'''
+
| 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''
 
! ''data''
Zeile 34: Zeile 37:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== 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.<br>
+
'''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>
 
<br>
 
Wird '''0''' zurückgeliefert, war der Vorgang erfolgreich, andernfalls wird ein GLU-Fehler erzeugt (siehe [[gluErrorString]]).<br>
 
Wird '''0''' zurückgeliefert, war der Vorgang erfolgreich, andernfalls wird ein GLU-Fehler erzeugt (siehe [[gluErrorString]]).<br>
 
<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>
+
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 Mipmapping durchgeführt wird.<br>
 
<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>
 
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>
Zeile 51: Zeile 55:
 
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.
 
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>
 
 
== Hinweise ==
 
== 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).
 
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).
Zeile 61: Zeile 64:
 
'''GLU_INVALID_ENUM''' wird generiert, wenn ''internalFormat'', ''format'' oder ''type'' keine zulässigen Werte haben.
 
'''GLU_INVALID_ENUM''' wird generiert, wenn ''internalFormat'', ''format'' oder ''type'' keine zulässigen Werte haben.
  
<br>
+
 
 +
 
  
  

Aktuelle Version vom 7. Mai 2006, 13:42 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, 4 oder 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 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 Mipmapping 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