Operasi Porting Piksel
Saat porting kode yang melibatkan operasi piksel, ingatlah poin-poin berikut:
- Operasi piksel logis tidak diterapkan ke buffer warna RGBA. Untuk informasi selengkapnya, lihat glLogicOp.
- Secara umum, IRIS GL menggunakan format ABGR untuk piksel, sedangkan OpenGL menggunakan RGBA. Anda dapat mengubah format dengan glPixelStore.
- Saat memindahkan fungsi lrectwrite , berhati-hatilah untuk mencatat di mana lrectwrite menulis (misalnya, itu bisa menulis ke buffer kedalaman).
OpenGL memberi Anda beberapa fleksibilitas tambahan dalam operasi piksel. Tabel berikut mencantumkan fungsi IRIS GL untuk operasi piksel dan fungsi OpenGL yang setara.
Fungsi IRIS GL | Fungsi OpenGL | Makna |
---|---|---|
lrectread, rectread,readRGB |
glReadPixels | Membaca blok piksel dari framebuffer. |
lrectwrite, rectwrite | glDrawPixels | Menulis blok piksel ke framebuffer. |
rectcopy | glCopyPixels | Menyalin piksel dalam framebuffer. |
rectzoom | glPixelZoom | Menentukan faktor zoom piksel untuk glDrawPixels dan glCopyPixels. |
cmov | glRasterPos | Menentukan posisi raster untuk operasi piksel. |
sumber baca | glReadBuffer | Memilih sumber buffer warna untuk piksel. |
pixmode | glPixelStore,glPixelTransfer | Mengatur mode penyimpanan piksel. Atur mode transfer piksel. |
logicop | glLogicOp | Menentukan operasi logis untuk penulisan piksel. |
glEnable ( GL_LOGIC_OP ) | Mengaktifkan operasi logika piksel. |
Untuk daftar lengkap kemungkinan operasi logis, lihat glLogicOp.
Sampel kode IRIS GL ini menunjukkan penulisan piksel yang khas:
unsigned long *packedRaster;
..
packedRaster[k] = 0x00000000;
..
lrectwrite(0, 0, xSize, ySize, packedRaster);
Kode sebelumnya terlihat seperti ini saat diterjemahkan ke OpenGL:
glRasterPos2i( 0, 0);
glDrawPixels( xSize + 1, ySize + 1, GL_RGBA, GL_UNSIGNED_BYTE, packedRaster);