Domanda

Voglio stencizzare alcuni oggetti 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)
.

Ho provato così tante ore per ottenere una semplice operazione booleana, ma non lo capisco.

Voglio qualcosa del genere:

 img

È stato utile?

Soluzione

Consiglierei contro reinventare La ruota .

Altri suggerimenti

Il buffer dello stencil OpenGL funziona sulla griglia pixel 2 dimensionale del buffer del fotogramma.OpenGL non ha nozione di oggetti o una scena.È solo punti, linee e triangoli.Quindi un vero CSG non è possibile con solo OpenGL.Tuttavia ci sono tecniche che emano CSG con operazioni di buffer stencil, ma sono piuttosto complesse.Google per "OpenGL CSG nel buffer dello stencil" per trovare alcuni documenti dalla metà del 1990-IES sull'argomento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top