Question

Je veux sortir des pochoirs certains objets avec 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)

J'ai essayé tant d'heures pour obtenir une simple opération booléenne, mais je ne l'obtiens pas.

Je veux quelque chose comme ceci:

 img

Était-ce utile?

La solution

Je recommanderais de réinventer la roue .

Autres conseils

Le tampon de pochoir de OpenGL fonctionne sur la grille de pixels de 2 dimensions du tampon de cadre.OpenGL elle-même n'a aucune notion d'objets ou d'une scène.C'est simplement des points de dessin, des lignes et des triangles.Donc, un vrai CSG n'est pas possible avec juste OpenGL.Cependant, il existe des techniques qui imitatent CSG avec des opérations tampons de pochoir, mais elles sont assez complexes.Google pour "OpenGL CSG dans le tampon de pochoir" pour trouver des papiers de la mi-1990-ies sur le sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top