是否必须为几何着色器中发出的每个顶点设置每个变量?
Does every variable have to be set for every vertex emitted in a geometry shader?
在我在 OpenGL 中使用的几何着色器中,我在开始时设置了一个变量,然后在不重置它的情况下发出顶点,但在 vulkan 中,如果我不在每个 EmitVertex()
之间写入该变量我的代码无法正常工作。
我在 glsl 规范中找不到任何关于此的内容,是否有针对此的规则并且第一种情况恰好有效?迁移到 spirv 有什么变化吗?
GS code writes all of the output values for a vertex, then calls EmitVertex(). This tells the system to write those output values to where ever it is that output vertices get written. After calling this function, all output variables contain undefined values. So you will need to write to them all again before emitting the next vertex (if there is a next vertex).
在我在 OpenGL 中使用的几何着色器中,我在开始时设置了一个变量,然后在不重置它的情况下发出顶点,但在 vulkan 中,如果我不在每个 EmitVertex()
之间写入该变量我的代码无法正常工作。
我在 glsl 规范中找不到任何关于此的内容,是否有针对此的规则并且第一种情况恰好有效?迁移到 spirv 有什么变化吗?
GS code writes all of the output values for a vertex, then calls EmitVertex(). This tells the system to write those output values to where ever it is that output vertices get written. After calling this function, all output variables contain undefined values. So you will need to write to them all again before emitting the next vertex (if there is a next vertex).