1

使用glBegin/glEnd时,是否相当于一个draw call?

我的意思是,据我所知,当使用 glDrawArrays 时,这就是将数据传输到 GPU(客户端到服务器端)的时间点。使用 glBegin/glEnd 时,数据是否仅在 glEnd 调用时传输到 GPU?或者每个 glVertex/glNormal/glTexCoord 调用一个一个地转移顶点?

4

1 回答 1

5

这些工作的方式取决于实现。至少,在调用glVertex/之前,您可以知道没有任何内容会传输到 GPU glVertexAttrib(0),因为这些是引发顶点的原因(即:导致发送属性状态)。顶点数据是在调用激发函数时立即传输,还是在某个glEnd时间缓冲和传输,或者甚至更晚,完全取决于实现。

还有……你不应该在意。如果您使用的是立即模式,那应该是因为您不关心性能。如果您关心,您将使用缓冲区对象和现代渲染功能,而不是立即模式。

于 2013-08-24T15:41:18.310 回答