opengl - glMultiDrawElements 和 glDrawElements 等价
问题描述
我在许多glMultiDrawElements
“等效”的网站上阅读过这样做:
for(int i = 0; i < drawCount; ++i){
glDrawElements(mode, counts[i], type, indices[i]);
}
但我不明白的是“等价物”的那一部分。等价到什么程度?如果两者完全相同,那么glMultiDrawElements
如果我可以对glDrawElements
函数和 for 循环执行相同的操作,那么函数的意义何在?
该glMultiDrawElements
功能是否给我一些性能优势?
解决方案
glMultiDrawElements
表现得好像你做了那些绘制调用。性能不是,也从来不是,“行为”的一部分。OpenGL 规范定义了行为;它没有也不能指定性能。
还应该注意的是,从 OpenGL 4.6/ ARB_shader_draw_parameters 开始,这些不再是完全等效的函数。多重绘制函数能够将输入gl_DrawID
参数设置为 Vertex Shader,从而允许着色器管道知道正在执行多重绘制操作中间的哪个绘制操作。
你不能用glDrawElements
.
推荐阅读
- angular - 错误类型错误:没有'new'就不能调用类构造函数EventEmitter_
- android - Android 脚本总是返回积极的互联网连接
- reactjs - 在 React 功能组件中重新渲染 Google Maps Elevations API 响应
- php - 从 2 个输入转换 laravel 中的时间
- verilog - 将 x(无关)分配给寄存器复位值或组合输出以提高区域效率
- calendar - 在 ICS 日历文件中,我的会议是为所有与会者创建的,但不是为组织者创建的?
- c++ - 函数调用返回指向对象的指针是纯右值吗?
- python - Wagtail - 如何使用不同的模板设置多个路径到相同的模型实例?
- python - 根据第一个字符以外的字段对文件内容进行排序
- wordpress - Wordpress (DIVI) 网站上的 iFrame 实施