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 |
---|---|
|
target tidak GL_TEXTURE_2D. |
|
format bukan konstanta yang diterima. |
|
tipe bukan konstanta yang diterima. |
|
tipe GL_BITMAP dan format tidak GL_COLOR_INDEX. |
|
tingkat kurang dari nol atau lebih besar dari maks log2, di mana maks adalah nilai yang dikembalikan dari GL_MAX_TEXTURE_SIZE. |
|
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. |
|
lebar kurang dari b, di mana b adalah lebar batas array tekstur. |
|
batas bukan nol atau 1. |
|
Array tekstur tidak ditentukan oleh operasi glTexImage2D sebelumnya. |
|
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:
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 |
|
Pustaka |
|
DLL |
|