fungsi glTexImage2D

Fungsi glTexImage2D menentukan gambar tekstur dua dimensi.

Sintaks

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

Parameter

target

Tekstur target. Pasti GL_TEXTURE_2D.

tingkat

Nomor tingkat detail. Tingkat 0 adalah tingkat gambar dasar. Level n adalah gambar pengurangan mipmap ke-n .

internalformat

Jumlah komponen warna dalam tekstur. Harus 1, 2, 3, atau 4, atau salah satu konstanta simbolis berikut: 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_R3_G3_B2, GL_RGB, 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, atau GL_RGBA16.

width

Lebar gambar tekstur. Harus 2n + 2(batas) untuk beberapa bilangan bulat n.

height

Tinggi gambar tekstur. Harus 2*m* + 2(batas) untuk beberapa bilangan bulat m.

Perbatasan

Lebar batas. Harus 0 atau 1.

format

Format data piksel. Ini dapat mengasumsikan salah satu dari sembilan nilai simbolis.

Nilai Makna
GL_COLOR_INDEX
Setiap elemen adalah nilai tunggal, indeks warna. Ini dikonversi ke titik tetap (dengan jumlah 0 bit yang tidak ditentukan ke kanan titik biner), digeser ke kiri atau kanan tergantung pada nilai dan tanda GL_INDEX_SHIFT, dan ditambahkan ke GL_INDEX_OFFSET (lihat glPixelTransfer). Indeks yang dihasilkan dikonversi ke sekumpulan komponen warna menggunakan tabel GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B, dan GL_PIXEL_MAP_I_TO_A, dan dijepit ke rentang [0,1].
GL_RED
Setiap elemen adalah komponen merah tunggal. Ini dikonversi menjadi titik mengambang dan dirakit menjadi elemen RGBA dengan melampirkan 0,0 untuk hijau dan biru, dan 1,0 untuk alfa. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_GREEN
Setiap elemen adalah komponen hijau tunggal. Ini dikonversi menjadi titik mengambang dan dirakit menjadi elemen RGBA dengan melampirkan 0,0 untuk merah dan biru, dan 1,0 untuk alfa. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_BLUE
Setiap elemen adalah komponen biru tunggal. Ini dikonversi menjadi titik mengambang dan dirakit menjadi elemen RGBA dengan melampirkan 0,0 untuk merah dan hijau, dan 1,0 untuk alfa. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_ALPHA
Setiap elemen adalah komponen merah tunggal. Ini dikonversi menjadi titik mengambang dan dirakit menjadi elemen RGBA dengan melampirkan 0,0 untuk merah, hijau, dan biru. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_RGB
Setiap elemen adalah RGB tiga kali lipat. Ini dikonversi menjadi floating point dan dirakit menjadi elemen RGBA dengan melampirkan 1.0 untuk alpha. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_RGBA
Setiap elemen adalah elemen RGBA lengkap. Ini dikonversi menjadi titik mengambang. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_BGR_EXT
Setiap piksel adalah sekelompok tiga komponen dalam urutan ini: biru, hijau, merah.
GL_BGR_EXT menyediakan format yang cocok dengan tata letak memori bitmap independen perangkat Windows (DIB). Dengan demikian aplikasi Anda dapat menggunakan data yang sama dengan panggilan fungsi Windows dan panggilan fungsi piksel OpenGL.
GL_BGRA_EXT
Setiap piksel adalah sekelompok empat komponen dalam urutan ini: biru, hijau, merah, alfa. GL_BGRA_EXT menyediakan format yang cocok dengan tata letak memori bitmap independen perangkat Windows (DIB). Dengan demikian aplikasi Anda dapat menggunakan data yang sama dengan panggilan fungsi Windows dan panggilan fungsi piksel OpenGL.
GL_LUMINANCE
Setiap elemen adalah nilai luminance tunggal. Ini dikonversi menjadi titik mengambang, dan kemudian dirakit menjadi elemen RGBA dengan mereplikasi nilai luminans tiga kali untuk merah, hijau, dan biru, dan melampirkan 1,0 untuk alfa. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).
GL_LUMINANCE_ALPHA
Setiap elemen adalah pasangan luminance/alpha. Ini dikonversi menjadi titik mengambang, dan kemudian dirakit menjadi elemen RGBA dengan mereplikasi nilai luminans tiga kali untuk merah, hijau, dan biru. Setiap komponen kemudian dikalikan dengan faktor skala yang ditandatangani GL_c_SCALE, ditambahkan ke bias yang ditandatangani GL_c_BIAS, dan dijepit ke rentang [0,1] (lihat glPixelTransfer).

jenis

Jenis data data piksel. Nilai simbolis berikut diterima: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, dan GL_FLOAT.

Piksel

Penunjuk ke data gambar dalam memori.

Nilai hasil

Fungsi ini tidak mengembalikan nilai.

Kode kesalahan

Kode kesalahan berikut dapat diambil oleh fungsi glGetError.

Nama Makna
GL_INVALID_ENUM
target bukan GL_TEXTURE_2D.
GL_INVALID_ENUM
format bukan konstanta format yang diterima. Hanya format konstanta selain GL_STENCIL_INDEX dan GL_DEPTH_COMPONENT yang diterima. Lihat deskripsi parameter format untuk daftar nilai yang mungkin.
GL_INVALID_ENUM
tipe bukan konstanta tipe .
GL_INVALID_ENUM
tipe GL_BITMAP dan format tidak GL_COLOR_INDEX.
GL_INVALID_VALUE
tingkat kurang dari nol atau lebih besar dari maks log2, di mana maks adalah nilai yang dikembalikan dari GL_MAX_TEXTURE_SIZE.
GL_INVALID_VALUE
internalformat bukan 1, 2, 3, atau 4.
GL_INVALID_VALUE
lebar atau tinggi kurang dari nol atau lebih besar dari 2 + GL_MAX_TEXTURE_SIZE, atau tidak dapat diwakili sebagai 2n + 2(batas) untuk beberapa nilai bilangan bulat n.
GL_INVALID_VALUE
batas bukan 0 atau 1.
GL_INVALID_OPERATION
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd.

Keterangan

Fungsi glTexImage2D menentukan gambar tekstur dua dimensi. Tekstur memetakan sebagian gambar tekstur tertentu ke setiap primitif grafis yang teksturnya diaktifkan. Teksuring dua dimensi diaktifkan dan dinonaktifkan menggunakan glEnable dan glDisable dengan argumen GL_TEXTURE_2D.

Gambar tekstur didefinisikan dengan glTexImage2D. Argumen menjelaskan parameter gambar tekstur, seperti tinggi, lebar, lebar batas, angka tingkat detail (lihat glTexParameter), dan jumlah komponen warna yang disediakan. Tiga argumen terakhir menjelaskan cara gambar diwakili dalam memori. Argumen ini identik dengan format piksel yang digunakan untuk glDrawPixels.

Data dibaca dari piksel sebagai urutan byte yang ditandatangani atau tidak ditandatangani, celana pendek atau panjang, atau nilai floating-point presisi tunggal, tergantung pada jenisnya. Nilai-nilai ini dikelompokkan ke dalam satu, dua, tiga, atau empat nilai, tergantung pada format, untuk membentuk elemen. Jika jenis GL_BITMAP, data dianggap sebagai string byte yang tidak ditandatangani (dan format harus GL_COLOR_INDEX). Setiap byte data diperlakukan sebagai delapan elemen 1-bit, dengan urutan bit ditentukan oleh GL_UNPACK_LSB_FIRST (lihat glPixelStore). Silakan lihat glDrawPixels untuk deskripsi nilai yang dapat diterima untuk parameter jenis .

Gambar tekstur dapat memiliki hingga empat komponen per elemen tekstur, tergantung pada komponen. Gambar tekstur satu komponen hanya menggunakan komponen merah dari warna RGBA yang diekstrak dari piksel. Gambar dua komponen menggunakan nilai R dan A. Gambar tiga komponen menggunakan nilai R, G, dan B. Gambar empat komponen menggunakan semua komponen RGBA.

Pengteksan tidak berpengaruh dalam mode indeks warna.

Gambar tekstur dapat diwakili oleh format data yang sama dengan piksel dalam perintah glDrawPixels , kecuali bahwa GL_STENCIL_INDEX dan GL_DEPTH_COMPONENT tidak dapat digunakan. Mode glPixelStore dan glPixelTransfer memengaruhi gambar tekstur dengan cara yang tepat memengaruhi glDrawPixels.

Gambar tekstur dengan tinggi atau lebar nol menunjukkan tekstur null. Jika tekstur null ditentukan untuk tingkat detail 0, itu seolah-olah tekstur dinonaktifkan.

Fungsi berikut mengambil informasi yang terkait dengan glTexImage2D:

glGetTexImage

glIsEnabled dengan argumen GL_TEXTURE_2D

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Gl.h
Pustaka
Opengl32.lib
DLL
Opengl32.dll

Baca juga

glBegin

glDrawPixels

glEnd

glFog

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexParameter