Devo disegnare un contorno attorno a oggetti 2D nello spazio 3d. Ho provato a disegnare linee attorno all'oggetto (+ punti per riempire lo spazio), ma a causa della larghezza della linea, una parte di esso (~ 50%) copriva l'oggetto. Ho provato a usare il buffer di stencil, per eliminare questo problema, ma ho ottenuto sth in questo modo (il contorno è verde):
http://goo.gl/OI5uc (mi dispiace non poter pubblicare immagini, a causa della mia reputazione)
Puoi vedere (dove punta la freccia), che alcune parti della linea sono dietro all'oggetto e altre sopra. Questo cambia quando sposto la fotocamera, ma c'è sempre una parte che la copre. Ecco il codice che uso per disegnare l'oggetto:
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;
}
Ho provato diverse impostazioni del buffer dello stencil, ma sempre mi sono procurato questo. Ecco la domanda: 1. Sto impostando il buffer dello stencil sbagliato?
2. Esistono altri modi semplici per creare contorni su tali oggetti?
Grazie in anticipo.
MODIFICARE:
1. Non ho normali di oggetti.
2. L' oggetto può essere concavo.
3. Non riesco ad usare gli shader (vedi sotto perché).