gpt4 book ai didi

Vulkan坐标系: is +Z inwards?

转载 作者:行者123 更新时间:2023-12-02 06:52:58 29 4
gpt4 key购买 nike

根据此页面: https://matthewwellings.com/blog/the-new-vulkan-coordinate-system/

Vulkan 坐标系具有:

  • X 轴向右递增
  • Y 轴向下递增
  • Z 轴逐渐进入屏幕

在我自己的测试中,我可以确认X轴和Y轴。然而,对我来说,-Z 指向屏幕,而不是+Z。我的意思是:

  • 随着 X 的增加,场景会向左移动,因为相机向右移动。
  • 随着 Y 的增加,场景会向上移动,因为相机会向下移动。
  • 随着 Z 的增加,场景会逐渐远离,因为相机会向后移动。

我相信链接页面胜过我自己的学习代码,所以我不确定为什么会出现这种效果。

我的场景由单个纹理四边形组成。这是我正在使用的代码:

C++

// No rotation
auto identMat = glm::mat4(1.0f);
auto rotAmount = 0.0f;
auto rotAxis = glm::vec3(0.0f, 0.0f, 1.0f);
mUBO.mModel = glm::rotate(identMat, rotAmount, rotAxis);

float eyeXPos = 0.0f;
float eyeYPos = 0.0f;
float eyeZPos = time * 1.0f;
auto eyePosition = glm::vec3(eyeXPos, eyeYPos, eyeZPos);
auto centerPosition = glm::vec3(0.0f, 0.0f, 0.0f);
auto upAxis = glm::vec3(0.0f, 1.0f, 0.0f);
mUBO.mView = glm::lookAt(eyePosition, centerPosition, upAxis);

const float kWindowWidth = 800;
const float kWindowHeight = 600;
auto verticalFOV = glm::radians(45.0f);
auto aspectRatio = kWindowWidth / kWindowHeight;
auto nearPlane = 0.1f;
auto farPlane = 100.0f;
mUBO.mProj = glm::perspective(verticalFOV, aspectRatio, nearPlane, farPlane);
<小时/>

顶点着色器

layout(location = 0) in vec2 inPosition;
// ...
gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition, 0.0, 1.0);

------------------------ 编辑 ---------------------- ------------

我不会因为这个或类似的事情而失眠。但是,由于我决定给自己买一件 Vulkan T 恤,所以我继续为这个问题创建了一个测试用例,以防有人有足够的好奇心来运行它。更新UBO的函数名称称为UpdateUniformBuffer()。该代码是独立的,只是它需要 GLFW 库。另外,它需要最新的 C++ 编译器(我使用 VS2017)。

T恤:https://teespring.com/vulkan#pid=2&cid=2397&sid=front

main.cpp https://pastebin.com/RWpNDfjc

测试渲染器.hpp https://pastebin.com/09TTF1e3

测试渲染器.cpp https://pastebin.com/wCDV0CEk

着色器.vert https://pastebin.com/fb5f4hvF

着色器.frag https://pastebin.com/CCVpnmwj

最佳答案

当您使用glm时,只需定义GLM_FORCE_DEPTH_ZERO_TO_ONE。它将矩阵深度范围映射到 Vulkans 的 [0..+1] 范围,而不是 OpenGL 的 [-1..+1] 范围。

关于Vulkan坐标系: is +Z inwards?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48924725/

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