对于Visual Studio开发的OpenGL游戏,是否有可能计算在API的帮助下绘制的三角形或对象(网格没有相互连接)?我没有找到任何相关信息。手动计算它们似乎是人为的痛苦。
答案 0 :(得分:0)
虽然“自己”这样做并不麻烦,但您可以覆盖/重定向所有glDraw*()
次来电。
glDraw*()
设置一个宏来实现它。看起来像是:
int drawCallCount = 0;
#define glDrawArrays(...) \
do { glad_glDrawArrays(__VA_ARGS__); ++drawCallCount; } while (0)
// etc glDraw*()
然后在每个帧结束时,我会阅读drawCallCount
并将其重置为0
。
请注意,我正在使用GLAD。
考虑glDrawArrays(GLenum mode, GLint first, GLsizei count)
。然后,您会检查mode
是GL_TRIANGLES
,然后(count - first) / 3
将是绘制调用的三角形数量。
+-------------------+---------------------+
| Mode | Triangles |
+-------------------+---------------------+
| GL_TRIANGLES | (count - first) / 3 |
+-------------------+---------------------+
| GL_TRIANGLE_STRIP | (count - 2 - first) |
+-------------------+---------------------+
| GL_TRIANGLE_FAN | (count - 2 - first) |
+-------------------+---------------------+
答案 1 :(得分:0)
我自己想出来了,结果与搅拌机完全相同。
绘制的对象当然有很多网格。绘制的网格顶点计数存储在一个简单变量中,该变量设置为零,然后在每个渲染循环迭代中求和并除以3。