如何使用Vulkan绘制标准图元

Vulkan是否提供绘制基本图元的功能?点,线,矩形,实心矩形,圆角矩形,实心圆角矩形,圆,实心圆等。

我不相信有任何VkCmdDraw *命令可以提供此功能。如果是这样,那么需要做些什么来绘制像这样的简单图元?

chntm2000 回答:如何使用Vulkan绘制标准图元

Vulkan不是矢量图形库。这是您GPU的API。

它确实具有(方形)点和线。但是大小不是1是可选的。除了VK_EXT_line_rasterization扩展名中的功能之外,您可以想到的所有其他高级功能也不是API的一部分。

矩形可以是四行的线带。

填充矩形大概是两个填充三角形(分别是Triangle Strip图元)。

可以通过渲染边界矩形并在“片段着色器”中丢弃形状的不需要部分来制作圆角和圆。或者可以使用模板缓冲区来完成某些事情。或者有一个Compute Shader,它可以执行任何操作。另外,也可以用三角形来模拟它们。

,

Vulkan中没有此类实用程序功能。如果需要绘制特定图元,则需要自己提供顶点(和索引)。所以如果你想要绘制一个圆,您需要使用标准三角函数计算顶点,并使用缓冲区将其提供给您的绘制调用。

这意味着通过vkCreateBuffer创建一个缓冲区,通过vkAllocateMemory分配将数据存储到该缓冲区所需的内存,并将该缓冲区映射到主机内存后,您可以复制原始图元的顶点(和/或索引)到这样的缓冲区。

如果您使用的是统一的内存架构(即台式机GPU),那么您还希望将数据从主机上传到设备以达到最佳性能。

一旦设置了缓冲区,并由内存支持,并且您的值存储在该缓冲区中,您就可以使用vkCmdDraw*命令来绘制基元。

本文链接:https://www.f2er.com/3131957.html

大家都在问