Bagikan melalui


fungsi glTexSubImage2D

Fungsi glTexSubImage2D menentukan sebagian dari gambar tekstur satu dimensi yang ada. Anda tidak dapat menentukan tekstur baru dengan glTexSubImage2D.

Sintaks

void WINAPI glTexSubImage2D(
         GLenum  target,
         GLint   level,
         GLint   xoffset,
         GLint   yoffset,
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

Parameter

target

Tekstur target. Pasti GL_TEXTURE_2D.

tingkat

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

xoffset

Offset texel ke arah x dalam array tekstur.

yoffset

Offset texel ke arah y dalam array tekstur.

width

Lebar sub-gambar tekstur.

height

Tinggi sub-gambar tekstur.

format

Format data piksel. Ini dapat mengasumsikan salah satu nilai simbolis berikut.

Nilai Makna
GL_COLOR_INDEX
Setiap elemen adalah nilai tunggal, indeks warna. Ini dikonversi ke format titik tetap (dengan jumlah 0 bit yang tidak ditentukan di sebelah 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 ke format 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 ke format 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 ke format 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 alfa tunggal. Ini dikonversi ke format 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 ke format titik mengambang dan dirakit menjadi elemen RGBA dengan 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_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_LUMINANCE
Setiap elemen adalah nilai luminance tunggal. Ini dikonversi ke format 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 ke format 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 tidak GL_TEXTURE_2D.
GL_INVALID_ENUM
format bukan konstanta yang diterima.
GL_INVALID_ENUM
tipe bukan konstanta yang diterima.
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
xoffset kurang dari -b; atau lebar xoffset + lebih besar dari w - b; atau yoffset kurang dari -b; atau tinggi yoffset + lebih besar dari h - b, di mana w adalah GL_TEXTURE_WIDTH, h adalah GL_TEXTURE_HEIGHT, dan b adalah lebar GL_TEXTURE_BORDER gambar tekstur yang dimodifikasi.
Perhatikan bahwa w dan h menyertakan dua kali lebar batas.
GL_INVALID_VALUE
lebar kurang dari b, di mana b adalah lebar batas array tekstur.
GL_INVALID_VALUE
batas bukan nol atau 1.
GL_INVALID_OPERATION
Array tekstur tidak ditentukan oleh operasi glTexImage2D sebelumnya.
GL_INVALID_OPERATION
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd.

Keterangan

Teksur dua dimensi untuk primitif diaktifkan menggunakan glEnable dan glDisable dengan argumen GL_TEXTURE_2D. Selama tekstur, bagian dari gambar tekstur tertentu dipetakan ke dalam setiap primitif yang diaktifkan. Anda menggunakan fungsi glTexSubImage2D untuk menentukan sub-gambar yang berdampingan dari gambar tekstur dua dimensi yang ada untuk tekstur.

Texel yang direferensikan oleh piksel menggantikan wilayah array tekstur yang ada dengan indeks xoffset dan xoffset + (lebar 1) inklusif dan indeks y yoffset dan yoffset + (tinggi 1) inklusif. Wilayah ini tidak dapat menyertakan texel apa pun di luar rentang array tekstur yang awalnya ditentukan.

Menentukan sub-gambar dengan lebar nol tidak berpengaruh dan tidak menghasilkan kesalahan.

Pengteksan tidak berpengaruh dalam mode indeks warna.

Secara umum, 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.

Fungsi berikut mengambil informasi yang terkait dengan glTexSubImage2D:

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

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter