使用glBegin / glEnd时,是否相当于一次绘制调用?
我的意思是,当我使用glDrawArrays时,据我所知,这是数据传输到GPU(客户端到服务器端)的关键。当使用glBegin / glEnd时,数据仅在glEnd调用时传输到GPU吗?或者每个glVertex / glNormal / glTexCoord调用一个接一个地传递顶点?
答案 0 :(得分:5)
这些工作如何依赖于实现。至少,您可以知道在调用glVertex
/ glVertexAttrib(0)
之前没有任何内容传输到GPU,因为这些是引发顶点的原因(即:导致属性状态被发送)。是否在调用激发函数时立即传输顶点数据,或者在glEnd
时间,或者甚至更晚的时间缓冲和传输顶点数据,完全取决于实现。
另外......你不应该在乎。如果您使用的是立即模式,那应该是因为您不关心性能。如果你关心,你将使用缓冲对象和现代渲染功能,而不是立即模式。