Como criar geometria sólida construtiva em OpenGL/C++
Pergunta
Quero criar estêncil em alguns objetos com 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)
Tentei tantas horas conseguir uma operação booleana simples, mas não consegui.
Eu quero algo assim:
Solução
Eu recomendaria não reinventar a roda.
Outras dicas
O buffer de estêncil do OpenGL opera na grade de pixels bidimensional do buffer de quadro.O próprio OpenGL não tem noção de objetos ou cena.É apenas desenhar pontos, linhas e triângulos.Portanto, um CSG real não é possível apenas com OpenGL.No entanto, existem técnicas que emulam CSG com operações de buffer de estêncil, mas são bastante complexas.Pesquise no Google "OpenGL CSG no buffer de estêncil" para encontrar alguns artigos de meados da década de 1990 sobre o assunto.
Experimente a biblioteca sgCore - http://www.geometros.com/sgcore/review.htmBiblioteca muito robusta e poderosa