fungsi glPixelTransferf

Fungsi glPixelTransferf dan glPixelTransferi mengatur mode transfer piksel.

Sintaks

void WINAPI glPixelTransferf(
   GLenum  pname,
   GLfloat param
);

Parameter

nama p

Nama simbolis parameter transfer piksel yang akan diatur. Tabel berikut memberikan jenis, nilai awal, dan rentang nilai yang valid untuk setiap parameter transfer piksel yang diatur dengan glPixelTransfer.

Nama P Jenis Nilai Awal Rentang yang Valid
GL_MAP_COLOR Boolean salah benar/salah
GL_MAP_STENCIL Boolean salah benar/salah
GL_INDEX_SHIFT bilangan bulat 0 (8,8)
GL_INDEX_OFFSET bilangan bulat 0 (8,8)
GL_RED_SCALE bilangan bulat 1,0 (8,8)
GL_GREEN_SCALE float 1,0 (8,8)
GL_BLUE_SCALE float 1,0 (8,8)
GL_ALPHA_SCALE float 1,0 (8,8)
GL_DEPTH_SCALE float 1,0 (8,8)
GL_RED_BIAS float 0.0 (8,8)
GL_GREEN_BIAS float 0.0 (8,8)
GL_BLUE_BIAS float 0.0 (8,8)
GL_ALPHA_BIAS float 0.0 (8,8)
GL_DEPTH_BIAS float 0.0 (8,8)

Param

Nilai yang ditetapkan pname .

Menampilkan nilai

Fungsi ini tidak mengembalikan nilai.

Keterangan

Fungsi glPixelTransfer mengatur mode transfer piksel yang memengaruhi pengoperasian glCopyPixels berikutnya, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexSubImage1D, dan glTexSubImage2D perintah. Algoritma yang ditentukan oleh mode transfer piksel beroperasi pada piksel setelah dibaca dari framebuffer (glReadPixels dan glCopyPixels) atau dibongkar dari memori klien (glDrawPixels, glTexImage1D, dan glTexImage2D). Operasi transfer piksel terjadi dalam urutan yang sama, dan dengan cara yang sama, terlepas dari perintah yang menghasilkan operasi piksel. Mode penyimpanan piksel (glPixelStore) mengontrol pembukaan piksel yang dibaca dari memori klien, dan pengemasan piksel yang ditulis kembali ke memori klien.

Operasi transfer piksel menangani empat jenis piksel dasar: warna, indeks warna, kedalaman, dan stensil. Piksel warna terdiri dari empat nilai floating-point dengan mantissa dan ukuran eksponen yang tidak ditentukan, diskalakan sedih sehingga 0,0 mewakili intensitas nol dan 1,0 mewakili intensitas penuh. Indeks warna terdiri dari satu nilai titik tetap, dengan presisi yang tidak ditentukan di sebelah kanan titik biner. Piksel kedalaman terdiri dari satu nilai floating-point, dengan ukuran mantissa dan eksponen yang tidak ditentukan, diskalakan sedemikian rupa sehingga 0,0 mewakili nilai buffer kedalaman minimum, dan 1,0 mewakili nilai buffer kedalaman maksimum. Terakhir, piksel stensil terdiri dari satu nilai titik tetap, dengan presisi yang tidak ditentukan di sebelah kanan titik biner.

Operasi transfer piksel yang dilakukan pada empat jenis piksel dasar adalah sebagai berikut:

Jenis piksel Operasi transfer piksel
Warna Masing-masing dari empat komponen warna dikalikan dengan faktor skala, lalu ditambahkan ke faktor bias. Artinya, komponen merah dikalikan dengan GL_RED_SCALE, dan kemudian ditambahkan ke GL_RED_BIAS; komponen hijau dikalikan dengan GL_GREEN_SCALE, lalu ditambahkan ke GL_GREEN_BIAS; komponen biru dikalikan dengan GL_BLUE_SCALE, lalu ditambahkan ke GL_BLUE_BIAS; dan komponen alfa dikalikan dengan GL_ALPHA_SCALE, lalu ditambahkan ke GL_ALPHA_BIAS. Setelah keempat komponen warna diskalakan dan bias, masing-masing dijepit ke rentang [0,1]. Semua skala warna dan nilai bias ditentukan dengan glPixelTransfer.
Jika GL_MAP_COLOR benar, setiap komponen warna diskalakan oleh ukuran peta warna-ke-warna yang sesuai, lalu digantikan oleh konten peta yang diindeks oleh komponen berskala. Artinya, komponen merah diskalakan oleh GL_PIXEL_MAP_R_TO_R_SIZE, dan kemudian digantikan oleh konten GL_PIXEL_MAP_R_TO_R diindeks dengan sendirinya. Komponen hijau diskalakan dengan GL_PIXEL_MAP_G_TO_G_SIZE, dan kemudian digantikan oleh konten GL_PIXEL_MAP_G_TO_G diindeks dengan sendirinya. Komponen biru diskalakan oleh GL_PIXEL_MAP_B_TO_B_SIZE, dan kemudian digantikan oleh konten GL_PIXEL_MAP_B_TO_B diindeks dengan sendirinya. Komponen alfa diskalakan dengan GL_PIXEL_MAP_A_TO_A_SIZE, lalu digantikan oleh konten GL_PIXEL_MAP_A_TO_A diindeks dengan sendirinya. Semua komponen yang diambil dari peta kemudian dijepit ke rentang [0,1]. GL_MAP_COLOR ditentukan dengan glPixelTransfer. Konten berbagai peta ditentukan dengan glPixelMap.
Indeks warna Setiap indeks warna digeser ke kiri oleh bit GL_INDEX_SHIFT, mengisi dengan nol bit apa pun di luar jumlah bit pecahan yang dibawa oleh indeks titik tetap. Jika GL_INDEX_SHIFT negatif, pergeseran ke kanan, sekali lagi nol terisi. GL_INDEX_OFFSET kemudian ditambahkan ke indeks. GL_INDEX_SHIFT dan GL_INDEX_OFFSET ditentukan dengan glPixelTransfer.
Dari titik ini, operasi berbeda tergantung pada format piksel yang dihasilkan yang diperlukan. Jika piksel yang dihasilkan ditulis ke buffer indeks warna, atau jika mereka dibaca kembali ke memori klien dalam format GL_COLOR_INDEX, piksel terus diperlakukan sebagai indeks. Jika GL_MAP_COLOR benar, maka setiap indeks ditutupi oleh 2 ^ n 1, di mana n GL_PIXEL_MAP_I_TO_I_SIZE, lalu digantikan oleh isi GL_PIXEL_MAP_I_TO_I yang diindeks oleh nilai bertopeng. GL_MAP_COLOR ditentukan dengan glPixelTransfer. Konten peta indeks ditentukan dengan glPixelMap.
Jika piksel yang dihasilkan ditulis ke buffer warna RGBA, atau jika dibaca kembali ke memori klien dalam format selain GL_COLOR_INDEX, piksel dikonversi dari indeks ke warna dengan mereferensikan empat peta 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. Sebelum didereferensikan, indeks ditutupi oleh 2 n 1, di mana n GL_PIXEL_MAP_I_TO_R_SIZE untuk peta merah, GL_PIXEL_MAP_I_TO_G_SIZE untuk peta hijau, GL_PIXEL_MAP_I_TO_B_SIZE untuk peta biru, dan GL_PIXEL_MAP_I_TO_A_SIZE untuk peta alfa. Semua komponen yang diambil dari peta kemudian dijepit ke rentang [0,1]. Konten empat peta ditentukan dengan glPixelMap.
Kedalaman Setiap nilai kedalaman dikalikan dengan GL_DEPTH_SCALE, ditambahkan ke GL_DEPTH_BIAS, lalu dijepit ke rentang [0,1].
Stencil Setiap indeks digeser GL_INDEX_SHIFT bit sama seperti indeks warna, lalu ditambahkan ke GL_INDEX_OFFSET. Jika GL_MAP_STENCIL benar, setiap indeks ditutupi oleh 2n 1, di mana n GL_PIXEL_MAP_S_TO_S_SIZE, lalu digantikan oleh konten GL_PIXEL_MAP_S_TO_S yang diindeks oleh nilai bertopeng.

Fungsi glPixelTransferf dapat digunakan untuk mengatur parameter transfer piksel apa pun. Jika jenis parameter adalah Boolean, 0.0 menyiratkan false dan nilai lainnya menyiratkan true. Jika pname adalah parameter bilangan bulat, param dibulatkan ke bilangan bulat terdekat.

Demikian juga, glPixelTransferi juga dapat digunakan untuk mengatur salah satu parameter transfer piksel. Parameter Boolean diatur ke false jika param adalah 0 dan benar sebaliknya. Parameter param dikonversi ke floating point sebelum ditetapkan ke parameter bernilai nyata.

Jika perintah glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D, atau glTexImage2D ditempatkan dalam daftar tampilan (lihat glNewList dan glCallList), pengaturan mode transfer piksel yang berlaku saat daftar tampilan dijalankan adalah yang digunakan. Mereka mungkin berbeda dari pengaturan ketika perintah dikompilasi ke dalam daftar tampilan.

Fungsi berikut mengambil informasi yang terkait dengan glPixelTransfer:

glGet dengan argumen GL_MAP_COLOR

glGet dengan argumen GL_MAP_STENCIL

glGet dengan argumen GL_INDEX_SHIFT

glGet dengan argumen GL_INDEX_OFFSET

glGet dengan argumen GL_RED_SCALE

glGet dengan argumen GL_RED_BIAS

glGet dengan argumen GL_GREEN_SCALE

glGet dengan argumen GL_GREEN_BIAS

glGet dengan argumen GL_BLUE_SCALE

glGet dengan argumen GL_BLUE_BIAS

glGet dengan argumen GL_ALPHA_SCALE

glGet dengan argumen GL_ALPHA_BIAS

glGet dengan argumen GL_DEPTH_SCALE

glGet dengan argumen GL_DEPTH_BIAS

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

Lihat juga

glBegin

glCallList

glCopyPixels

glDrawPixels

glEnd

glNewList

glPixelMap

glPixelStore

glPixelZoom

glReadPixels

glTexImage1D

glTexImage2D