我目前正在尝试学习Vulkan,所以如果这个问题是愚蠢/明显的,请随时因为我缺乏知识而打电话给我。
我在网上搜索(使用谷歌(试图获得我需要的信息,但没有成功,这就是我在这里的原因。
我的问题 :假设我有一个具有以下输入的顶点着色器:
layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inNormal;
layout(location = 2) in vec2 inUV;
我已经配置了管道和缓冲区以将信息发送到顶点着色器。我的问题来自尝试用索引绘制。多个相同的顶点可以有不同的法线,所以我想指定从哪个索引中读取 3 个不同输入的数据。
环顾四周并查看 API,我找不到一种为每个顶点的不同输入提供不同索引的方法。
我想要这样的东西:
indices = {0, 0, 0, // Vertice, Normal, UV
0, 1, 0, // Vertice, Normal, UV
3, 8, 3}; // Vertice, Normal, UV
因此,总共有 3 个顶点,但每个不同的输入都有索引。这在 vulkan 中可能吗,如果不是,我该如何解决这个问题?
这是不可能的。
您需要复制数据,以便每个唯一顶点都有自己的数据。这在opengl中是完全相同的交易。
可以选择使用存储缓冲区根据作为顶点数据传递的索引以编程方式拉取数据,但这可能会导致性能降低。