Pregunta

Quiero sacar algunos objetos con OpenGL.

glClear(GL_STENCIL_BUFFER_BIT);
glColorMask(false, false, false, false);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL, 0, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glDisable(GL_DEPTH_TEST);
glColor4f(0,0,1,1.0f);

gl::draw(mVBO); //a sphere

glEnable(GL_DEPTH_TEST);
glColorMask(true, true, true, true);
glStencilFunc(GL_ALWAYS,0, 1);
glStencilOp(GL_REPLACE,GL_KEEP, GL_ZERO);

mTexture.enableAndBind();
gl::drawCube(Vec3f(0,3,0),Vec3f(13,13,13) );

glDisable(GL_STENCIL_TEST)

Intenté tantas horas para lograr una simple operación booleana, pero no lo entiendo.

quiero algo como esto:

 img

¿Fue útil?

Solución

Recomendaría contra reinventar la rueda .

Otros consejos

El búfer de la plantilla de OpenGL funciona en la cuadrícula de píxeles 2 del búfer de marco.OpenGl en sí no tiene ninguna idea de objetos ni una escena.Es simplemente puntos de dibujo, líneas y triángulos.Así que un verdadero CSG no es posible con solo OpenGL.Sin embargo, hay técnicas que emulan CSG con operaciones de tampón de plantillas, pero son bastante complejas.Google para "OpenGL CSG en el búfer de la plantilla" para encontrar algunos papeles de mediados de la década de 1990 sobre el tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top