在vulkan中的转换功能

问题描述 投票:0回答:3

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

graphics rotation translation scaling vulkan
3个回答
0
投票

如果您正在寻找源代码,Vulkan Cookbook具有实现每个转换的代码示例(translationrotationscaling)。

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

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


0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.