gpt4 book ai didi

directx - 如何使用 Direct3D 使灯光在世界中保持固定

转载 作者:行者123 更新时间:2023-12-03 17:22:06 24 4
gpt4 key购买 nike

我已经使用 OpenGL 多年了,但是在第一次尝试使用 D3D 之后,我浪费了大量时间试图弄清楚如何让我的场景灯光在世界上保持固定而不是固定在我的对象上。

在 OpenGL 中,灯光位置就像使用 MODELVIEW 矩阵的其他所有内容一样进行转换,因此为了将灯光固定在空间中,您可以按照您想要的灯光方式设置 MODELVIEW,然后调用 glLightPosition,然后为您的几何体设置它并进行几何体调用.在 D3D 中,这无济于事。

(评论——我最终找到了这个问题的答案,但我在网络或 MSDN 上找不到任何有用的东西。如果我当时能找到这个答案,它会为我节省几个小时的头脑 Storm 。 )

最佳答案

我最终发现的答案是,虽然 OpenGL 只有一个合并 MODELVIEW矩阵,在 D3D 中,“世界”和“ View ”变换是分开的,而放置灯光似乎是造成这种情况的主要原因。所以答案是你使用 D3DTS_VIEW设置适用于您的灯光的矩阵,以及 D3DTS_WORLD设置适用于您的几何体在世界中的位置的矩阵。

所以实际上 D3D 系统比 OpenGL 方式更有意义。它允许您随时随地指定您想要一劳永逸的灯光位置,而不必不断地重新定位它们,以便它们通过您当前的“ View ”变换进行变换。 OpenGL 必须以这种方式工作,因为它根本不知道您认为您的“ View ”与“模型”是什么。这只是 GL 的模型 View 。

(评论 - 如果我不应该在这里回答我自己的问题,我深表歉意,但这是我几周前提出的一个真实问题,我认为值得在这里发布以帮助其他人从 OpenGL 转向 D3D。基本概述D3D 照明和渲染管道的内容似乎很难获得。)

关于directx - 如何使用 Direct3D 使灯光在世界中保持固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com