Necesito dibujar el contorno alrededor de objetos 2D en el espacio 3D. Intenté dibujar líneas alrededor del objeto (+ puntos para llenar el espacio), pero debido al ancho de la línea, una parte (~ 50%) cubría el objeto. Intenté usar el búfer de plantilla para eliminar este problema, pero obtuve algo como esto (el contorno es verde):
http://goo.gl/OI5uc (lo siento, no puedo publicar imágenes, debido a mi reputación)
Puede ver (donde los puntos de flecha), que algunas partes de la línea están detrás del objeto, y algunas están arriba. Esto cambia cuando muevo la cámara, pero siempre hay una parte que la cubre. Aquí hay un código que uso para dibujar objetos:
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;
}
He intentado diferentes configuraciones de búfer de plantilla, pero siempre estaba obteniendo algo así. Aquí está la pregunta: 1. ¿Estoy configurando mal el búfer de la plantilla?
2. ¿Hay otras formas simples de crear contornos en tales objetos?
Gracias por adelantado.
EDITAR:
1. No tengo normales de objetos.
2. El objeto puede ser cóncavo.
3. No puedo usar sombreadores (ver abajo por qué).