Opengl 在几何体着色器中为每个基本体写入基本体ID

Opengl 在几何体着色器中为每个基本体写入基本体ID,opengl,glsl,Opengl,Glsl,我对他的描述有点困惑。据说 该值的含义是您希望它是什么。然而,如果 您希望匹配标准OpenGL的含义(即:片段是什么 着色器将得到(如果没有使用GS),只需对每个顶点执行此操作 发射前:gl_PrimitiveID=gl_PrimitiveID 这是否意味着如果我从几何体着色器输出四元体,片段着色器将得到0,1,2,3?我需要的是每个基本体输出一次gl_基本体ID,而不是每个顶点或三角形。这就足够了吗 gl_PrimitiveID = gl_PrimitiveIDIn 如果我在EndPrim

我对他的描述有点困惑。据说

该值的含义是您希望它是什么。然而,如果 您希望匹配标准OpenGL的含义(即:片段是什么 着色器将得到(如果没有使用GS),只需对每个顶点执行此操作 发射前:gl_PrimitiveID=gl_PrimitiveID

这是否意味着如果我从几何体着色器输出四元体,片段着色器将得到0,1,2,3?我需要的是每个基本体输出一次gl_基本体ID,而不是每个顶点或三角形。这就足够了吗

 gl_PrimitiveID = gl_PrimitiveIDIn

如果我在EndPrimitive()之前只写一次

顺便说一句,有人碰巧看到@Nicolas吗?这家伙从九月份开始就在所有的电视台上迷路了。(非常抱歉)也许他找到了一份工作;)从技术上讲,GS输出的任何属性在发射顶点后都具有未定义的值。老实说,逐顶点发射这种光是没有意义的,因为如果三角形中的3个顶点中的每个顶点都被赋予不同的基本ID,会发生什么?在光栅化过程中插入基元ID是一项毫无意义的操作。有一个激发顶点的概念,它是唯一需要定义
gl_PrimitiveID
的顶点;换句话说,基本体中的第一个/最后一个顶点(取决于激发模式)是定义整个对象ID的顶点。此外,如何在几何体着色器中发射四边形=P基本类型只有三种选择:点、线带或三角形带。