0

新しいテクスチャを既存の FBO にバインドしようとしています。しかし、現時点では速度が大幅に低下します。

        int holdTextureId = glGenTextures();

        glBindTexture(GL_TEXTURE_2D, 0);
        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, panoramaModelsFboId); 

        glBindTexture(GL_TEXTURE_2D, holdTextureId);                                
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);                   
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);           
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, SAVE_WIDTH, SAVE_HEIGHT, 0,GL_RGBA, GL_INT, (java.nio.ByteBuffer) null);
        glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, holdTextureId, 0);

        glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, panoramaModelsDepthRenderBufferId);              
        glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, SAVE_WIDTH, SAVE_HEIGHT);
        glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT, panoramaModelsDepthRenderBufferId);

  //Rendering starts here..
  // After which I unbind the FBO and use the texture

glTexImage2D が加害者だと感じているので、このプロセスが始まる前にテクスチャを作成することは考えられるでしょうか? また、おそらく毎回レンダーバッファーを作成する必要はありませんが、時間を節約し、必要かどうかを教えていただけます:)

4

1 に答える 1

1

パフォーマンスの低下glTexImage2Dは、非常に高額な通話にあります。既存のテクスチャをバインドするだけの場合は、新しいテクスチャオブジェクトを作成したり、再初期化したりする必要はありません。

電話glFramebufferTexture2Dするだけで十分です。事前にテクスチャをバインドする必要はありません。実際、テクスチャをバインドしてフレームバッファターゲットとして使用することはできません。

于 2013-01-09T08:59:05.790 に答える