“小批量绘制调用”是指少于 n 个顶点的任何东西。我不确定使用的确切阈值,但它可能在 100-200 的数量级上。spritebatches 真正做的是消除多次拆分绘图调用以切换绑定纹理的需要,这并不自动意味着每个绘图调用将超过 100(或在此上下文中定义的任何 n)顶点;这是一个很大的可能性,但不是必需的。
老实说,我会更关心非 VBO 绘图调用,而不是使用 VAO,特别是如果您希望您的代码向前兼容。
“Logical Buffer Load”和“Mipmapping Usage”警告很可能相关;可能两者都与FBO有关。其中一个与未glClear (...)
正确使用有关,另一个与使用没有 mipmap 的纹理有关。
关于逻辑缓冲区加载,您应该研究一下GL_EXT_discard_framebuffer
,以这种方式清除帧缓冲区对于基于 Tile 的延迟渲染 GPU(例如所有 iOS 设备使用的 GPU)来说是一种非常健康的优化策略。
至于 mipmap 使用警告,我相信这是被触发的,因为您正在绘制 FBO 纹理,然后使用 mipmap 过滤器模式应用该纹理。绘制的 FBO 的 mip 链/金字塔必须使用glGenerateMipamp (...)
.
如果您能指出一些触发这些警告的个别行,我很乐意为您更详细地解释它们。