【问题标题】:OpenGL face culling when scaling Y with -1使用 -1 缩放 Y 时的 OpenGL 面剔除
【发布时间】:2012-08-22 03:32:24
【问题描述】:

我有一个简单的楼梯(数组中的顶点):

[]
[][]

我想把这个楼梯倒过来:

[][]
[]

为了得到这个形状,我将每个 Y 坐标与-1 相乘,所以基本上用-1 围绕y-axis 进行缩放。这很好用,但不适用于面部剔除,当启用面部剔除时,会显示背面。我该如何解决?

【问题讨论】:

    标签: opengl


    【解决方案1】:

    您可以反转正面的一侧 (glFrontFace),或者您可以禁用背面剔除。

    【讨论】:

    • 我不想禁用背面剔除(它对性能的影响太大)。你有一个如何扭转它们的例子吗?我想不出什么。
    【解决方案2】:

    在绘制这些倒置对象时,可以翻转面部剔除的方向。

    只要用GL_CW或GL_CCW调用glFrontFace(),当你再次绘制普通物体时再放回去。

    【讨论】:

    • 不幸的是,这是不可能的,我正在将顶点写入 VBO 并与其他顶点一起绘制。
    • @dav1d:这并不能解释为什么你不能只用倒置的面剔除来渲染这个对象。毕竟,你必须给它一个否定 Y 的特殊矩阵,对吧?此外,如果这是一个问题,您应该将其放入 question
    • 如果你把它放入这样的 VBO 中,你不能在 VBO 中反转三角形的缠绕吗?当您镜像顶点时,它会翻转绕组。您可以告诉 OpenGL 使用不同的绕组,自己翻转它,或者禁用剔除。真的没有其他选择了。 @dav1d
    • @NicolBolas,我不明白,你的意思是我应该在着色器中再次否定 Y?我会尝试改变绕组,这听起来很有希望。
    • @dav1d:如果你没有在着色器中否定 Y,你在哪里 否定它?
    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2021-07-17
    • 2012-10-29
    • 1970-01-01
    • 2011-08-08
    • 2012-12-27
    相关资源
    最近更新 更多