OpenGl选择
我正在制作一个盒子,并在底部放置“磁铁”。侧面略微透明(alpha介于.2和.5之间),底部为实心。我试图使用gluUnProject()选择“磁铁”的放置位置,但当渲染长方体的侧面时,我无法将磁铁放入长方体中 是否仍然需要渲染墙的侧面,但为了单击鼠标而忽略它们OpenGl选择,opengl,mouseevent,Opengl,Mouseevent,我正在制作一个盒子,并在底部放置“磁铁”。侧面略微透明(alpha介于.2和.5之间),底部为实心。我试图使用gluUnProject()选择“磁铁”的放置位置,但当渲染长方体的侧面时,我无法将磁铁放入长方体中 是否仍然需要渲染墙的侧面,但为了单击鼠标而忽略它们 我试过GL_CULL_FACE,但乍一看,这似乎不是我想要的。因此,如果我理解正确,你有半透明的盒子,当磁铁在盒子里时,你想根据盒子的半透明程度看到磁铁 我的猜测是,当你画盒子的时候,你打开了深度写入,这样如果盒子恰好在磁铁之前被画出来
我试过GL_CULL_FACE,但乍一看,这似乎不是我想要的。因此,如果我理解正确,你有半透明的盒子,当磁铁在盒子里时,你想根据盒子的半透明程度看到磁铁 我的猜测是,当你画盒子的时候,你打开了深度写入,这样如果盒子恰好在磁铁之前被画出来,那么当你画磁铁的时候,它将无法通过深度测试,里面的部分也不会被画出来 最简单的方法是:
glDepthMask(GL_FALSE);
glBlendFunc(GL_ONE, GL_ONE)
glDepthMask(GL_TRUE);
记住,这个简单的方法只有在使用一个可交换的混合方程时才能起作用,如果不考虑使用顺序无关的透明性,一篇好的文章是PyracalalNokes,Geoff Leach和Fabio Zambetta
< P> >“有效的分层片段缓冲技术”,如果我理解正确的话,您有半透明框,当磁铁位于框内时,您希望根据框的半透明看到磁铁 我的猜测是,当你画盒子的时候,你打开了深度写入,这样如果盒子恰好在磁铁之前被画出来,那么当你画磁铁的时候,它将无法通过深度测试,里面的部分也不会被画出来 最简单的方法是:glDepthMask(GL_FALSE);
glBlendFunc(GL_ONE, GL_ONE)
glDepthMask(GL_TRUE);
请记住,这个简单的方法只有在使用一个可交换的混合方程时才能起作用,如果不考虑使用顺序无关透明性,一篇好文章是“Pyrayal-Nokes,Geoff Leach和Fabio Zambetta WOOPS”的“高效分层片段缓冲技术”。在第五步中,我打算写“glDepthMask(true);”哎呀!在第五步中,我打算写“glDepthMask(true);”