美文网首页
OpenGL隐藏⾯消除解决⽅案

OpenGL隐藏⾯消除解决⽅案

作者: kennths | 来源:发表于2020-02-09 16:51 被阅读0次

我们都知道,在OpenGL绘制立体图形的时候,因为没有定义好图形哪些面对观察者可见,哪些面对观察者不可见,然后它就会全部绘制出来,而由于光照的原因,一个立体图形就会出现绘制混乱的问题,而解决这种问题,我们通常用到隐藏面消除的方法。

1.油画算法

    就是先绘制离观察者近的图形,再画距观察远的图形。这样近的总是显示在前,把后面的图形叠加的地方盖住,就不会产生混乱。但这种方法有弊端,如果是多个三角形绘制,这样会无法区分出哪些在前,哪些在后,也会出现混乱,所以这种方法是不推荐的。

2.正背面剔除

    想象一下,如果是一个立体图形,在观察者的方向去看是不可能看到全部的面的,只能看到最多三个面,那么看不到的面为什么要去绘制呢,绘制是需要浪费性能的,把这块隐藏的面去掉绘制的过程,还能增加绘制的性能。

    OpenGL 可以做到检查所有正⾯面朝向观察者的⾯面,并渲染它们.从⽽而丢弃背⾯面朝向的⾯面. 这样可以 节约⽚片元着⾊色器器的性能。

    其实OpenGL是通过检查顶点数据来判断正反面的,OpenGL里面,逆时针的顶点绘制顺序是正面,顺时针的顶点绘制顺序是反面。再根据观察者的观察位置,在左在右也会影响到正反面的位置,所以是由顶点绘制顺序和观察者的位置共同决定的。

相关文章

  • OpenGL隐藏⾯消除解决⽅案

    我们都知道,在OpenGL绘制立体图形的时候,因为没有定义好图形哪些面对观察者可见,哪些面对观察者不可见,然后它就...

  • OpenGL 阐述隐藏面消除解决方案

    OpenGL 阐述隐藏面消除解决方案 在OpenGL中如果没有设置隐藏背面,就会出现下面这种情况,正面红色和背面黑...

  • OpenGL(六)-OpenGL隐藏面消除解决方案

    渲染过程中出现的问题 在我们自己绘制的一个甜甜圈案例中,当不对甜甜圈进行旋转的情况下没有任何问题,但是一旦旋转会出...

  • OpenGL隐藏面消除的解决方案

    在绘制3D场景的时候,旋转中就会出现如下图所示的情况!截屏2020-07-09 下午10.03.23.png 显然...

  • OpenGL中隐藏面消除解决方案

    什么是隐藏面消除 在绘制一个3D物体的时候,我们只能够看到物体的一部分(正面),对于不可见的背面和里面,应该不予绘...

  • 03、OpenGL隐藏面消除

    在渲染过程中可能产生的问题 在绘制3D场景的时候,我们需要决定哪些部分是对观察者可见的,或者哪些部分是对观察者不可...

  • OpenGL隐藏面消除详解

    什么是隐藏面消除? 隐藏面消除:在绘制3D场景的时候,我们需要决定哪些部分是对观察者可见的,或者哪些部分是对观察者...

  • OpenGL下隐藏面消除的解决方案

    在OpenGL的渲染下,我们需要决定哪些部分是对观察者可见的,或者哪些部分不可见。对于不可见的部分我们需要进行一定...

  • OpenGL 渲染技巧-隐藏⾯消除问题解决

    隐藏⾯消除 其实很直接的解释就是在绘制3D场景的时候,需要决定那部分是观察者能够看到的,那部分是观察者看不到的,对...

  • OpenGL下隐藏面消除的解决方案

    作者:林子的蜕变路链接:https://juejin.cn/post/6896834505244409869[ht...

网友评论

      本文标题:OpenGL隐藏⾯消除解决⽅案

      本文链接:https://www.haomeiwen.com/subject/cjhnxhtx.html