我试图思考为什么 OpenGL 在调用glBeginTransformFeedback时需要知道原始类型。本质上,它只是存储在缓冲区中的数据。
我的猜测是 OpenGL 以某种方式需要它来计算需要多少空间,因此绘制命令可以并行运行,而不会影响彼此的数据。但是当你提交一个绘图命令时,OpenGL 应该能够从绘图中指定的图元类型推断出所需的空间。
在使用几何着色器的情况下,我认为无法预先知道所需的空间量,因为每个单独的执行都可能输出不同数量的图元(我想在硬件中实现这应该是相当具有挑战性的!)。但在那种情况下,我认为指定原始类型glBeginTransformFeedback
无论如何都没有帮助。输出原语类型也可以从绑定的程序中推断出来。
所以在我看来,指定原始类型glBeginTransformFeedback
只是限制了您可以渲染的原始类型。为什么会有这个限制?