【问题标题】:DirectX and Negative ScaleDirectX 和负比例
【发布时间】:2014-02-21 13:03:39
【问题描述】:

我开始尝试一些 DirectX 类型的东西,我有一个关于缩放矩阵的问题。如果我将视图矩阵设置为:

XMMatrixTranspose(XMMatrixIdentity() * XMMatrixScaling(1.0f,2.0f,1.0f))

然后 y 轴上的所有东西(一个居中的正方形)看起来都是两倍大,这是我所期望的。如果我将其设置为负数,唉:

XMMatrixScaling(1.0f,-2.0f,1.0f)

然后一切都消失了。事实上,如果我将比例矩阵的任何值设置为

【问题讨论】:

    标签: coordinates scaling directx-11


    【解决方案1】:

    这是由back-face cullingclipping 引起的。假设您启用了剔除(默认情况下启用),当您将 x 或 y 轴的比例设置为负时,它会翻转所有三角形的缠绕顺序。这会导致所有三角形都被视为“向后”并且 GPU 不会绘制它们。假设您没有应用其他变换矩阵,并且正方形位于 x-y 平面中,翻转 z 符号不会导致三角形背面,而只会导致正方形位于视口之外(例如从 z = 0.5,在视口深度范围内的一半,到 z = -0.5,在视口深度范围之外)。

    背面剔除是一种性能优化,因为大多数 3D 场景都有封闭的几何体(或者至少,它们不会让您看到开放的部分)。这意味着每个后向三角形都应该有一个前向三角形覆盖它,因此绘制后向三角形没有意义。但是,有时这并不总是正确的,如果您曾经玩过游戏并且离岩石或墙壁太近,并且能够看穿整个物体,那是因为您已经从前面夹住了,并且由于另一面是背面,不会被画出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 2010-10-05
      • 2018-08-21
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多