Come creare una geometria solida costruttiva in OpenGL / C ++
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:
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.
Prova SGCore Library - http://www.geometros.com/sgcore/review.htm . Biblioteca molto robusta e potente