Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi glReadPixels membaca blok piksel dari framebuffer.
Sintaks
void WINAPI glReadPixels(
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
GLvoid *pixels
);
Parameter
-
x
-
Koordinat jendela x piksel pertama yang dibaca dari framebuffer. Bersama dengan koordinat y , menentukan lokasi sudut kiri bawah blok persegi panjang piksel.
-
y
-
Koordinat jendela y dari piksel pertama yang dibaca dari framebuffer. Bersama dengan koordinat x , menentukan lokasi sudut kiri bawah blok persegi panjang piksel.
-
width
-
Lebar persegi piksel.
-
height
-
Tinggi persegi panjang piksel. Parameter lebar dan tinggi nilai "1" sesuai dengan satu piksel.
-
format
-
Format data piksel. Nilai simbolik berikut diterima:
Nilai Makna - GL_COLOR_INDEX
Indeks warna dibaca dari buffer warna yang dipilih oleh glReadBuffer. Setiap indeks dikonversi ke titik tetap, digeser ke kiri atau kanan, tergantung pada nilai dan tanda GL_INDEX_SHIFT, dan ditambahkan ke GL_INDEX_OFFSET. Jika GL_MAP_COLOR GL_TRUE, indeks digantikan oleh pemetaannya dalam tabel GL_PIXEL_MAP_I_TO_I. - GL_STENCIL_INDEX
Nilai stensil dibaca dari buffer stensil. Setiap indeks dikonversi ke titik tetap, digeser ke kiri atau kanan, tergantung pada nilai dan tanda GL_INDEX_SHIFT, dan ditambahkan ke GL_INDEX_OFFSET. Jika GL_MAP_STENCIL GL_TRUE, indeks digantikan oleh pemetaannya dalam tabel GL_PIXEL_MAP_S_TO_S. - GL_DEPTH_COMPONENT
Nilai kedalaman dibaca dari buffer kedalaman. Setiap komponen dikonversi ke titik mengambang sededih sehingga nilai kedalaman minimum dipetakan ke 0,0 dan nilai maksimum dipetakan menjadi 1,0. Setiap komponen kemudian dikalikan dengan GL_DEPTH_SCALE, ditambahkan ke GL_DEPTH_BIAS, dan akhirnya dijepit ke rentang [0,1]. - GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_BGR_EXT, GL_BGRA_EXT, GL_LUMINANCE, GL_LUMINANCE_ALPHA
Pemrosesan berbeda tergantung pada apakah buffer warna menyimpan indeks warna atau komponen warna RGBA. Jika indeks warna disimpan, indeks tersebut dibaca dari buffer warna yang dipilih oleh glReadBuffer. Setiap indeks dikonversi ke titik tetap, digeser ke kiri atau kanan, tergantung pada nilai dan tanda GL_INDEX_SHIFT, dan ditambahkan ke GL_INDEX_OFFSET. Indeks kemudian digantikan oleh nilai merah, hijau, biru, dan alfa yang diperoleh dengan mengindeks 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. Jika komponen warna RGBA disimpan dalam buffer warna, komponen tersebut dibaca dari buffer warna yang dipilih oleh glReadBuffer. Setiap komponen warna dikonversi menjadi titik mengambang sedingin nol peta intensitas ke 0,0 dan peta intensitas penuh menjadi 1,0. Setiap komponen kemudian dikalikan dengan GL_c_SCALE dan ditambahkan ke GL_c_BIAS, di mana c GL_RED, GL_GREEN, GL_BLUE, dan GL_ALPHA. Setiap komponen dijepit ke rentang [0,1]. Akhirnya, jika GL_MAP_COLOR GL_TRUE, setiap komponen warna c digantikan oleh pemetaannya dalam tabel GL_PIXEL_MAP_c_TO_c, di mana c lagi adalah GL_RED, GL_GREEN, GL_BLUE, dan GL_ALPHA. Setiap komponen diskalakan ke ukuran tabel yang sesuai sebelum pencarian dilakukan. Akhirnya, data yang tidak diperlukan dibuang. Misalnya, GL_RED membuang komponen hijau, biru, dan alfa, sementara GL_RGB hanya membuang komponen alfa. GL_LUMINANCE menghitung nilai komponen tunggal sebagai jumlah komponen merah, hijau, dan biru, dan GL_LUMINANCE_ALPHA melakukan hal yang sama, sambil mempertahankan alfa sebagai nilai kedua. -
jenis
-
Jenis data data piksel. Harus salah satu dari nilai berikut.
Jenis Masker indeks Konversi komponen GL_UNSIGNED_BYTE 281 (281) C GL_BYTE 271 [(271)c-1]/2 GL_BITMAP 1 1 GL_UNSIGNED_SHORT 2 61 (2 61) C GL_SHORT 2 51 [(2 51)c1]/2 GL_UNSIGNED_INT_ 2 1 (2 1) C GL_INT 2 1 [(2 1)c1]/2 GL_FLOAT tidak ada C -
piksel
-
Mengembalikan data piksel.
Menampilkan nilai
Fungsi ini tidak mengembalikan nilai.
Kode kesalahan
Kode kesalahan berikut dapat diambil oleh fungsi glGetError .
| Nama | Makna |
|---|---|
|
format atau jenis bukan nilai yang diterima. |
|
Lebar atautinggi negatif. |
|
format GL_COLOR_INDEX, dan buffer warna menyimpan komponen warna RGBA atau BGRA. |
|
format GL_STENCIL_INDEX, dan tidak ada buffer stensil. |
|
format GL_DEPTH_COMPONENT, dan tidak ada buffer kedalaman. |
|
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd. |
Keterangan
Fungsi glReadPixels mengembalikan data piksel dari framebuffer, dimulai dengan piksel yang sudut kiri bawahnya berada di lokasi (x, y), ke dalam memori klien yang dimulai dari piksel lokasi. Beberapa parameter mengontrol pemrosesan data piksel sebelum ditempatkan ke dalam memori klien. Parameter ini diatur dengan tiga perintah: glPixelStore, glPixelTransfer, dan glPixelMap. Topik ini menjelaskan efek pada glReadPixels sebagian besar, tetapi tidak semua parameter yang ditentukan oleh ketiga perintah ini.
Fungsi glReadPixels mengembalikan nilai dari setiap piksel dengan sudut kiri bawah di (x + i, y + j) untuk lebar 0 = i < dan tinggi 0 = j.< Piksel ini dikatakan sebagai piksel ith di baris jth. Piksel dikembalikan dalam urutan baris dari baris terendah ke tertinggi, kiri ke kanan di setiap baris.
Faktor pergeseran, skala, bias, dan pencarian yang dijelaskan di atas semuanya ditentukan oleh glPixelTransfer. Konten tabel pencarian ditentukan oleh glPixelMap.
Langkah terakhir melibatkan konversi indeks atau komponen ke format yang tepat, seperti yang ditentukan oleh jenis. Jika format GL_COLOR_INDEX atau GL_STENCIL_INDEX dan jenis tidak GL_FLOAT, setiap indeks ditutupi dengan nilai masker yang diberikan dalam tabel berikut. Jika jenis GL_FLOAT, maka setiap indeks bilangan bulat dikonversi ke format floating-point presisi tunggal.
Jika format GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_BGR_EXT, GL_BGRA_EXT, GL_LUMINANCE, atau GL_LUMINANCE_ALPHA dan jenis tidak GL_FLOAT, setiap komponen dikalikan dengan pengali yang diperlihatkan dalam tabel sebelumnya. Jika jenis GL_FLOAT, maka setiap komponen diteruskan apa adanya (atau dikonversi ke format floating-point presisi tunggal klien jika berbeda dari yang digunakan oleh OpenGL).
Nilai yang dikembalikan ditempatkan dalam memori sebagai berikut. Jika format GL_COLOR_INDEX, GL_STENCIL_INDEX, GL_DEPTH_COMPONENT, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, atau GL_LUMINANCE, nilai tunggal dikembalikan dan data untuk piksel ith di baris ke jditempatkan di lokasi (j )lebar + i. GL_RGB dan GL_BGR_EXT mengembalikan tiga nilai, GL_RGBA dan GL_BGRA_EXT mengembalikan empat nilai, dan GL_LUMINANCE_ALPHA mengembalikan dua nilai untuk setiap piksel, dengan semua nilai yang sesuai dengan satu piksel menempati ruang yang berdampingan dalam piksel. Parameter penyimpanan yang diatur oleh glPixelStore, seperti GL_PACK_SWAP_BYTES dan GL_PACK_LSB_FIRST, memengaruhi cara data ditulis ke dalam memori. Lihat glPixelStore untuk deskripsi.
Nilai untuk piksel yang terletak di luar jendela yang tersambung ke konteks OpenGL saat ini tidak terdefinisi.
Jika kesalahan dihasilkan, tidak ada perubahan yang dilakukan pada konten piksel.
Fungsi berikut mengambil informasi yang terkait dengan glReadPixels:
glGet dengan argumen GL_INDEX_MODE
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 |
|