1

自分で作ったfboを全部使ってレンダリングするプログラムを作りたいです。私はそのようなレンダリングの一般的な手順を知っています: 1. egl init. 2. プログラムの使用。3. 入力テクスチャ データ 4. swapbuffer。ですが、fboレンダリングに変更したら、原因がわからないことが起こりました。ここに私が追加した私のコードがあります:

glGenFramebuffers(1,frame_buf);
    glBindFramebuffer(GL_FRAMEBUFFER, frame_buf);
    glGenRenderbuffers(1, &color_buf);
    glBindRenderbuffer(GL_RENDERBUFFER, s->color_buf);
    glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, screen_width, screen_height);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, s->color_buf);

これを追加すると、作成したバインディング fbo で gl が動作するようになると思います。しかし、ウィンドウに画像が表示されません..

4

2 に答える 2

0

もちろん、画像は表示されませんでした。一般的に、表示されるようにするには、デフォルトのフレームバッファにレンダリングする必要があります。表示される画像はここにあります:デフォルトのフレームバッファ。

FBOへの中間レンダリングを行うことができます。ただし、スワップバッファ呼び出しを使用する前に、ブリットまたはデフォルトのフレームバッファにレンダリングする必要があります。

于 2013-02-26T07:42:12.897 に答える
0

On-Screen に直接レンダリングする場合は、使用したコードの代わりにこのコードを使用します

glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, screen_width, screen_height);

変化する

[eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(id<EAGLDrawable>)eaglLayer];

glRenderbufferStorage() オフスクリーンへの描画

Android で作業している場合は、このルールに従ってください

#ifdef IOS 

glBindFramebuffer(GL_FRAMEBUFFER, s_FrameBuffer);

#elif ANDROID 

glBindFramebuffer(GL_FRAMEBUFFER, 0);

#endif 
于 2013-02-26T23:22:54.303 に答える