我一直致力于一个 3D 渲染项目作为技术练习,看看我是否可以复制许多 3D 框架已经做的事情:从加载模型到将三角形绘制到准备绘制的缓冲区。
这是我设法制作的示例

正如您从屏幕截图中看到的那样,我在绘制表面纹理时遇到了障碍。我发现这个维基百科链接解释了仿射与非仿射。其他一些与此类似的关于透视正确纹理映射的链接更详细地介绍了它。
我仍然不明白如何在绘制像素时纠正 UV 坐标。
我的引擎目前如何处理三角形: 将 3D 顶点数据转换为 2D 屏幕数据 调用绘制三角形 在 0 和 1 之间传递深度以及绘制三角形内的纹理细节 通过沿着三角形的 3 个边进行插值来绘制每条垂直线
我已经对链接进行了更改,但出现除以零的错误。如果我忽略它们,就不会绘制任何东西。
问题
如何纠正每个像素选择的 UV 坐标。目前,我知道每个像素的深度在 0.0 到 1.0 之间,即表观 UV。
任何帮助将非常感激。先感谢您。
汤姆:)
更新:
解决方案,使用 Andreas Brinck 的答案。效果很好。下面是它现在工作的屏幕截图。

语境
我们正在将使用 Asp.Net Core (Web Api) 的 Web 应用程序迁移到使用 Angular2 单页应用程序 (SPA) 前端。该应用程序最初是使用“个人用户帐户”进行的。我们已经将 cshtml 视图转换为 Angular2 组件,将控制器方法转换为生成 Json,甚至合并 JWT 进行身份验证。
我一直在使用这个配置谷歌身份验证微软文档。
问题
通过以下两种控制器方法说明了该问题。该LinkLogin方法返回一个ChallengeResult动作。显然这不能转换为 JSON。我认为这个结果应该会导致浏览器重定向到外部登录提供程序,然后自动重定向到LinkLoginCallback.
[HttpPost]
public async Task<IActionResult> LinkLogin([FromBody] string provider)
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.Authentication.SignOutAsync(externalCookieScheme);
// Request a redirect to the external login provider to link a login for the current user
string redirectUrl = Url.Action(nameof(LinkLoginCallback), "Manage");
var properties …Run Code Online (Sandbox Code Playgroud)