gpt4 book ai didi

c# - 绘制带有纹理的 3D 三角形时如何校正透视?

转载 作者:行者123 更新时间:2023-11-30 17:58:42 24 4
gpt4 key购买 nike

我一直在做一个 3D 渲染项目作为技术练习,看看我是否可以复制许多 3D 框架已经做的事情:从加载模型到绘制三角形到准备好绘制的缓冲区的所有过程.

这是我成功制作的示例 Render of program output

正如您从屏幕截图中看到的那样,我在绘制表面纹理时遇到了障碍。这Wikipedia link我找到了关于仿射与非仿射的解释。关于 perspective correct texture mapping 的一些其他链接与此类似更详细地了解它。

我仍然不明白如何在绘制像素时更正我的 UV 坐标。

我的引擎目前如何处理三角形:将 3D 顶点数据转换为 2D 屏幕数据调用绘制三角形传递 0 和 1 之间的深度和纹理细节在绘制三角形内,通过沿三角形的 3 条边插值绘制每条垂直线

我已经对链接进行了更改,但出现被零除的错误。如果我忽略它们,则不会绘制任何内容。

问题

如何校正在每个像素处选择的 UV 坐标。目前我知道每个像素的深度在 0.0 到 1.0 之间,即表观 UV。

任何帮助将不胜感激。提前谢谢你。

汤姆 :)

更新:

解决方案,使用 Andreas Brinck 的答案。它工作正常。下面是它现在工作的屏幕截图。

working correct perspective texture mapping

最佳答案

不是在三角形上插值 u 和 v,而是插值 u/z、v/z 和 1/z(在顶点处计算)并检索透视正确坐标为 (u/z)/(1/z) 和(v/z)/(1/z).

关于c# - 绘制带有纹理的 3D 三角形时如何校正透视?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006132/

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