1

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];

シーンは複雑で、各フレームに 100 万を超える三角形がレンダリングされています。私の遅いフレーム レート (10 fps) は、マルチサンプリングではなく、ドロー コールによるものだと思いました。何かご意見は?

4

2 に答える 2

1

iPad を使用している場合、特に Retina を使用している場合、マルチサンプリングは非常にコストがかかる可能性があるため、驚くことではありません。多くのグラフィックス ビデオ カードで、何百万ものポリゴンをポンピングする能力を自慢するのをやめたのは知っています。なぜなら、後処理とシェーダーが実際にすべての時間を費やしていたため、押したトリスの数は問題ではないと誰もが理解したからです。

于 2013-04-22T23:13:35.077 に答える