在vulkan中的转换功能

时间:2018-04-24 06:28:44

标签: graphics rotation translation scaling vulkan

任何人都可以帮我找到资源来研究如何在Windows平台上使用Vulkan API实现转换功能(翻译,旋转和缩放)? 据我所知,Vulkan的来源非常有限,我无法找到关于Vulkan变换的单一材料。

3 个答案:

答案 0 :(得分:0)

如果您正在寻找源代码,Vulkan Cookbook包含实施这些转换的代码示例(translationrotationscaling)。

如果您正在寻找解释为什么以这种方式实现它们,您可以查找描述这些转换的任何资源。无论您使用什么API,翻译,旋转和缩放都表现完全相同。这是纯线性代数。由于使用了不同的坐标系,投影矩阵存在差异(Vulkan的深度在[0; 1]范围内,而OpenGL在[-1; 1]范围内;而framebuffer空间沿Y轴反转)。但是当你自己构建它们时,同样的方法适用,你只需要考虑这些不同的坐标系。

我遇到的描述为什么以这种方式创建矩阵的最佳资源是Frank D. Luna的Introduction to 3D Game Programming with DirectX

答案 1 :(得分:0)

如果您正在寻找类似于glTranslatefglScalefglRotatef的内容,那么您运气不佳。在Vulkan(或现代OpenGL中)存在类似的东西。使用现代渲染API,您可以使用自己喜欢的库管理CPU端的转换(视图,模型,投影)(我使用并推荐GLM)。变换使用统一块传递到着色器,通常作为mat4值,然后可以使用它们来变换输入顶点。

答案 2 :(得分:0)

如果您问我们如何自己实现这些,则必须学习一些线性代数才能做到这一点。以前的答案回答了这个问题。

如果没有,那么我建议使用GLM。它是最初为OpenGL编写的库,因此在使用它时必须小心。轴被翻转,请记住这一点。