fungsi glStencilOp

Fungsi glStencilOp mengatur tindakan uji stensil.

Sintaks

void WINAPI glStencilOp(
   GLenum fail,
   GLenum zfail,
   GLenum zpass
);

Parameter

Gagal

Tindakan yang harus diambil ketika tes stensil gagal. Enam konstanta simbolis berikut diterima.

Nilai Makna
GL_KEEP
Mempertahankan nilai saat ini.
GL_ZERO
Mengatur nilai buffer stensil ke nol.
GL_REPLACE
Mengatur nilai buffer stensil ke ref, seperti yang ditentukan oleh glStencilFunc.
GL_INCR
Meningkatkan nilai buffer stensil saat ini. Klem ke nilai maksimum yang tidak ditandatangani yang dapat direpresentasikan.
GL_DECR
Mengurangi nilai buffer stensil saat ini. Klem ke nol.
GL_INVERT
Bitwise mengembalikan nilai buffer stensil saat ini.

zfail

Tindakan stensil ketika tes stensil lulus, tetapi tes kedalaman gagal. Menerima konstanta simbolis yang sama sebagai gagal.

zpass

Tindakan stensil ketika tes stensil dan uji kedalaman lulus, atau ketika uji stensil lulus dan tidak ada buffer kedalaman atau pengujian kedalaman tidak diaktifkan. Menerima konstanta simbolis yang sama sebagai gagal.

Nilai kembali

Fungsi ini tidak mengembalikan nilai.

Kode kesalahan

Kode kesalahan berikut dapat diambil oleh fungsi glGetError .

Nama Makna
GL_INVALID_ENUM
fail, zfail, atau zpass adalah nilai apa pun selain enam nilai konstanta yang ditentukan.
GL_INVALID_OPERATION
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd.

Keterangan

Stensil, seperti z-buffering, mengaktifkan dan menonaktifkan menggambar per piksel. Anda menggambar bidang stensil menggunakan primitif gambar OpenGL, lalu merender geometri dan gambar, menggunakan bidang stensil untuk menutupi bagian layar. Stensil biasanya digunakan dalam algoritma penyajian multipass untuk mencapai efek khusus, seperti desal, kerangka, dan penyajian geometri padat yang konstruktif.

Pengujian stensil secara kondisional menghilangkan piksel berdasarkan hasil perbandingan antara nilai dalam buffer stensil dan nilai referensi. Pengujian diaktifkan dengan panggilan glEnable dan glDisable dengan argumen GL_STENCIL_TEST, dan dikontrol dengan glStencilFunc.

Fungsi glStencilOp mengambil tiga argumen yang menunjukkan apa yang terjadi pada nilai stensil yang disimpan saat stensil diaktifkan. Jika pengujian stensil gagal, tidak ada perubahan yang dilakukan pada buffer warna atau kedalaman piksel, dan gagal menentukan apa yang terjadi pada konten buffer stensil.

Nilai buffer stensil diperlakukan sebagai bilangan bulat yang tidak ditandatangani. Saat bertambah dan diurutkan, nilai dijepit ke 0 dan 2n 1, di mana n adalah nilai yang dikembalikan dengan mengkueri GL_STENCIL_BITS.

Dua argumen lain untuk glStencilOp menentukan tindakan buffer stensil harus pengujian buffer kedalaman berikutnya berhasil (zpass) atau gagal (zfail). (Lihat glDepthFunc.) Konstanta ini ditentukan menggunakan enam konstanta simbolis yang sama sebagai gagal. Perhatikan bahwa zfail diabaikan ketika tidak ada buffer kedalaman, atau ketika buffer kedalaman tidak diaktifkan. Dalam kasus ini, kegagalan dan zpass menentukan tindakan stensil ketika tes stensil gagal dan lulus, masing-masing.

Awalnya tes stensil dinonaktifkan. Jika tidak ada buffer stensil, tidak ada modifikasi stensil yang dapat terjadi dan seolah-olah tes stensil selalu lulus, terlepas dari panggilan apa pun ke glStencilOp.

Fungsi berikut mengambil informasi yang terkait dengan glStencilOp:

glGet dengan argumen GL_STENCIL_FAIL

glGet dengan argumen GL_STENCIL_PASS_DEPTH_PASS

glGet dengan argumen GL_STENCIL_PASS_DEPTH_FAIL

glGet dengan argumen GL_STENCIL_BITS

glIsEnabled dengan argumen GL_STENCIL_TEST

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

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc