Vulkan,不同输入的多个索引
Vulkan, multiple indices for different inputs
我目前正在尝试学习 Vulkan,所以如果这个问题是 stupid/obvious,请随时给我打电话,因为我缺乏知识。
我在网上搜索(使用 Google)试图获取我需要的信息,但没有成功,这就是我来这里的原因。
我的问题:
假设我有一个具有以下输入的顶点着色器:
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 中的完全相同。
可以选择使用存储缓冲区根据您作为顶点数据传递的索引以编程方式提取数据,但这可能会导致性能下降。
我目前正在尝试学习 Vulkan,所以如果这个问题是 stupid/obvious,请随时给我打电话,因为我缺乏知识。
我在网上搜索(使用 Google)试图获取我需要的信息,但没有成功,这就是我来这里的原因。
我的问题: 假设我有一个具有以下输入的顶点着色器:
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 中的完全相同。
可以选择使用存储缓冲区根据您作为顶点数据传递的索引以编程方式提取数据,但这可能会导致性能下降。