我正在使用OpenGL ES分析器。它表明对glResolveMultisampleFramebufferAPPLE()的调用占用了大约90%的运行时间。这是典型的,还是我的代码效率低下?这是我的绘画代码:

glBindFramebuffer(GL_FRAMEBUFFER, sampleFramebuffer);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Draw Stuff . . .

glBindFramebuffer(GL_DRAW_FRAMEBUFFER_APPLE, defaultFramebuffer);
glBindFramebuffer(GL_READ_FRAMEBUFFER_APPLE, sampleFramebuffer);
glResolveMultisampleFramebufferAPPLE();

const GLenum discard1[]  = {GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT};
glDiscardFramebufferEXT(GL_READ_FRAMEBUFFER_APPLE, 2, discard1);
const GLenum discard2[]  = {GL_DEPTH_ATTACHMENT};
glDiscardFramebufferEXT(GL_DRAW_FRAMEBUFFER_APPLE, 1, discard2);

glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer);
[[EAGLContext currentContext] presentRenderbuffer:GL_RENDERBUFFER];

场景很复杂,每帧渲染了超过一百万个三角形。我认为我的慢帧速率(10 fps)是由于绘图调用而不是多重采样。有什么想法吗?

最佳答案

如果您在iPad上,尤其是在Retina上,那么多重采样可能会非常昂贵,因此对我来说并不奇怪。我知道,在许多图形视频卡上,他们不再吹嘘泵送数百万个多边形的能力,因为每个人都知道推入的Tris数量无关紧要,因为后期处理和着色器确实占用了所有时间。

07-24 09:16