glTexImage1D-Funktion

Die glTexImage1D-Funktion gibt ein eindimensionales Texturbild an.

Syntax

void WINAPI glTexImage1D(
         GLenum  target,
         GLint   level,
         GLint   internalformat,
         GLsizei width,
         GLint   border,
         GLint   format,
         GLenum  type,
   const GLvoid  *pixels
);

Parameter

Ziel

Die Zieltextur. Muss GL_TEXTURE_1D sein.

level

Die LOD-Nummer (Level Of Detail, Detailebene). Ebene 0 ist die Basisbildebene. Ebene n ist die n. verkleinerte MIP-Map.

internalformat

Gibt die Anzahl der Farbkomponenten in der Textur an. Muss 1, 2, 3 oder 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

Die Breite des Texturbilds. Muss 2n + 2(border) für ein Integer n sein. Die Höhe des Texturbilds ist 1.

border

Die Breite des Rahmens. Muss entweder 0 oder 1 sein.

format

Das Format der Pixeldaten. Es kann einer von neun symbolischen Werten sein.

Wert Bedeutung
GL_COLOR_INDEX
Jedes Element ist ein einzelner Wert: ein Farbindex. Er wird in eine Festkommazahl konvertiert (mit einer nicht angegebenen Anzahl von 0 Bits rechts vom binären Komma), je nach Wert und Vorzeichen von GL_INDEX_SHIFT nach links bzw. rechts verschoben und mit GL_INDEX_OFFSET addiert (siehe glPixelTransfer). Der resultierende Index wird mithilfe der Tabellen GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B und GL_PIXEL_MAP_I_TO_A in Farbkomponenten konvertiert und an den Bereich [0,1] angefügt.
GL_RED
Jedes Element ist eine einzelne rote Komponente. Sie wird in eine Gleitkommazahl konvertiert und in ein RGBA-Element aufgelöst, indem 0,0 für Grün und Blau und 1,0 als Alphawert angefügt werden. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_GREEN
Jedes Element ist eine einzelne grüne Komponente. Sie wird in eine Gleitkommazahl konvertiert und in ein RGBA-Element aufgelöst, indem 0,0 für Rot und Blau und 1,0 als Alphawert angefügt werden. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_BLUE
Jedes Element ist eine einzelne blaue Komponente. Sie wird in eine Gleitkommazahl konvertiert und in ein RGBA-Element aufgelöst, indem 0,0 für Rot und Grün und 1,0 als Alphawert angefügt werden. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_ALPHA
Jedes Element ist eine einzelne rote Komponente. Sie wird in eine Gleitkommazahl konvertiert und in ein RGBA-Element aufgelöst, indem 0,0 für Rot, Grün und Blau angefügt wird. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_RGB
Jedes Element ist ein RGB-Tripel. Es wird in eine Gleitkommazahl konvertiert und in ein RGBA-Element aufgelöst, indem 1,0 als Alphawert angefügt wird. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_RGBA
Jedes Element ist ein vollständiges RGBA-Element. Es wird in eine Gleitkommazahl konvertiert. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_BGR_EXT
Jedes Pixel ist eine Gruppe von drei Komponenten in dieser Reihenfolge: Blau, Grün, Rot.
GL_BGR_EXT stellt ein Format bereit, das dem Speicherlayout von geräteunabhängigen Windows-Bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen dieselben Daten bei Aufrufen von Windows-Funktionen und OpenGL-Pixelfunktionen verwenden.
GL_BGRA_EXT
Jedes Pixel ist eine Gruppe von vier Komponenten in dieser Reihenfolge: Blau, Grün, Rot, Alpha.
GL_BGRA_EXT stellt ein Format bereit, das dem Speicherlayout von geräteunabhängigen Windows-Bitmaps (DIBs) entspricht. Daher können Ihre Anwendungen dieselben Daten bei Aufrufen von Windows-Funktionen und OpenGL-Pixelfunktionen verwenden.
GL_LUMINANCE
Jedes Element ist ein einzelner Luminanzwert. Er wird in eine Gleitkommazahl konvertiert und dann in ein RGBA-Element aufgelöst, indem der Luminanzwert dreimal für Rot, Grün und Blau repliziert und dann 1,0 als Alphawert angefügt wird. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).
GL_LUMINANCE_ALPHA
Jedes Element ist ein Paar aus Luminanz- und Alphawert. Es wird in eine Gleitkommazahl konvertiert und dann in ein RGBA-Element aufgelöst, indem der Luminanzwert dreimal für Rot, Grün und Blau repliziert wird. Jede Komponente wird dann mit dem Skalierungsfaktor GL_c_SCALE (mit Vorzeichen) multipliziert, mit dem Bias GL_c_BIAS (mit Vorzeichen) addiert und an den Bereich [0,1] angefügt (siehe glPixelTransfer).

type

Der Datentyp der Pixeldaten. Die folgenden symbolischen Werte werden akzeptiert: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT und GL_FLOAT.

pixels

Ein Zeiger auf die Bilddaten im Arbeitsspeicher.

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Fehlercodes

Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.

Name Bedeutung
GL_INVALID_ENUM
target war keine GL_TEXTURE.
GL_INVALID_ENUM
format war keine akzeptierte Formatkonstante. Es werden nur Formatkonstanten akzeptiert, die nicht GL_STENCIL_INDEX und GL_DEPTH_COMPONENT sind. Eine Liste möglicher Werte finden Sie in der Parameterbeschreibung von format.
GL_INVALID_ENUM
type war keine Typkonstante.
GL_INVALID_ENUM
type war eine GL_BITMAP, und format war nicht GL_COLOR_INDEX.
GL_INVALID_VALUE
level war kleiner als null oder größer als log2max, wobei max der zurückgegebene Wert von GL_MAX_TEXTURE_SIZE ist.
GL_INVALID_VALUE
internalformat war nicht 1, 2, 3 oder 4.
GL_INVALID_VALUE
width war kleiner als null oder größer als 2 + GL_MAX_TEXTURE_SIZE oder konnte nicht als 2n + 2(border) für einen Integerwert n dargestellt werden.
GL_INVALID_VALUE
border war nicht 0 oder 1.
GL_INVALID_OPERATION
Die Funktion wurde zwischen einem Aufruf von glBegin und dem zugehörigen Aufruf von glEnd aufgerufen.

Hinweise

Die glTexImage1D-Funktion gibt ein eindimensionales Texturbild an. Bei der Texturierung wird ein Teil eines angegebenen Texturbilds jedem primitiven Grafiktyp zugeordnet, für den die Texturierung aktiviert wurde. Die eindimensionale Texturierung wird mithilfe von glEnable und glDisable mit dem GL_TEXTURE_1D-Argument aktiviert bzw. deaktiviert.

Texturbilder werden mit glTexImage1D definiert. Die Argumente beschreiben die Parameter des Texturbilds, z. B. Breite, Rahmenbreite, LOD-Nummer (siehe glTexParameter) und Anzahl der bereitgestellten Farbkomponenten. Die letzten drei Argumente beschreiben, wie das Bild im Arbeitsspeicher dargestellt wird. Diese Argumente sind identisch mit den Pixelformaten, die für glDrawPixels verwendet werden.

Die Daten werden aus pixels je nach Typ als Abfolge von Bytes, short- oder long-Integer oder Gleitkommawerte mit einfacher Genauigkeit gelesen – jeweils mit oder ohne Vorzeichen. Diese Werte werden in Abhängigkeit von format in Gruppen von 1, 2, 3 oder 4 Werten zusammengefasst, um Elemente zu bilden. Wenn type den Wert „GL_BITMAP“ hat, werden die Daten als Zeichenfolge von Bytes ohne Vorzeichen gelesen (format muss GL_COLOR_INDEX sein). Jedes Datenbyte wird als acht 1-Bit-Elemente behandelt, wobei die Bitreihenfolge durch GL_UNPACK_LSB_FIRST bestimmt wird (siehe glPixelStore).

Ein Texturbild kann in Abhängigkeit von components bis zu vier Komponenten pro Texturelement enthalten. Ein Texturbild mit einer Komponente verwendet nur die rote Komponente der RGBA-Farbe, die aus pixels extrahiert wird. Ein Bild mit zwei Komponenten verwendet die R- und A-Werte. Ein Bild mit drei Komponenten verwendet die R-, G- und B-Werte. Ein Bild mit vier Komponenten verwendet alle RGBA-Komponenten.

Die Texturierung hat im Farbindexmodus keine Auswirkungen.

Das Texturbild kann durch dieselben Datenformate wie die Pixel in einem glDrawPixels-Befehl dargestellt werden, wobei GL_STENCIL_INDEX und GL_DEPTH_COMPONENT nicht verwendet werden können. Die Modi glPixelStore und glPixelTransfer wirken sich auf Texturbilder genau so aus wie auf glDrawPixels.

Ein Texturbild mit einer Breite von 0 (null) gibt die NULL-Textur an. Wenn die NULL-Textur für LOD 0 (Detailebene) angegeben wird, ist dies gleichbedeutend mit einer Deaktivierung der Texturierung.

Die folgenden Funktionen rufen Informationen im Zusammenhang mit glTexImageID ab:

glGetTexImage

glIsEnabled mit GL_TEXTURE_1D-Argument

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Siehe auch

glBegin

glCopyPixels

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnd

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage2D

glTexSubImage1D

glTexSubImage2D

glTexParameter