Saya perlu menggambar kontur di sekitar objek 2d dalam ruang 3d. Saya mencoba menggambar garis di sekitar objek (+ poin untuk mengisi celah), tetapi karena lebar garis, beberapa bagian darinya (~ 50%) menutupi objek. Saya mencoba menggunakan penyangga stensil, untuk menghilangkan masalah ini, tetapi saya mendapatkan sth seperti ini (kontur berwarna hijau):
http://goo.gl/OI5uc (maaf saya tidak dapat mengirim gambar, karena reputasi saya)
Anda dapat melihat (di mana panah menunjuk), bahwa beberapa bagian garis berada di belakang objek, dan beberapa di atas. Ini berubah ketika saya memindahkan kamera, tetapi selalu ada beberapa bagian, yang menutupinya. Berikut adalah kode, yang saya gunakan untuk menggambar objek:
glColorMask(1,1,1,1);
std::list<CObjectOnScene*>::iterator objIter=ptr->objects.begin(),objEnd=ptr->objects.end();
int countStencilBit=1;
while(objIter!=objEnd)
{
glColorMask(1,1,1,1);
glStencilFunc(GL_ALWAYS,countStencilBit,countStencilBit);
glStencilOp(GL_REPLACE,GL_KEEP,GL_REPLACE );
(*objIter)->DrawYourVertices();
glStencilFunc(GL_NOTEQUAL,countStencilBit,countStencilBit);
glStencilOp(GL_KEEP,GL_KEEP,GL_REPLACE);
(*objIter)->DrawYourBorder();
++objIter;
++countStencilBit;
}
Saya sudah mencoba berbagai pengaturan buffer stensil, tetapi saya selalu mendapatkan sth seperti itu. Inilah pertanyaannya: 1. Apakah saya salah mengatur penyangga stensil?
2. Apakah ada cara sederhana lain untuk membuat kontur pada objek seperti itu?
Terima kasih sebelumnya.
EDIT:
1. Saya tidak memiliki objek normal.
2. Objek bisa cekung.
3. Saya tidak bisa menggunakan shader (lihat alasannya di bawah).