0

私は FBO と PBO を一緒に使用し、FBO から PBO へ、フレームごとにピクセルを読み取ろうとしていました。コードは以下のとおりです。

//at the beginning:
//fbo
glGenFramebuffers(1, &m_fBO);
glBindFramebuffer(GL_FRAMEBUFFER, m_fBO);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texid, 0);
//pbo
glGenBuffersARB(1, &m_pbo);
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, m_pbo);
glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, DATA_SIZE, 0, GL_STREAM_READ_ARB);

//at each frame:
glBindFramebuffer(GL_FRAMEBUFFER, m_fBO);
Draw_some_stuff();
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, m_pbo);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, 0);   //err occurs
Ptr = glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY_ARB);
Cpu_works_on_Ptr();
glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB);

PCでは問題なく動作します。しかし、Androidフォンで実行できず、glReadPixelsの直後にエラー0x0502(GL_INVALID_OPERATION)が発生しました。

私のコードは、このリンクの一番下の回答と同じだと思います: ピクセル バッファー オブジェクト (PBO) を使用してフレーム バッファー オブジェクト (FBO) からピクセル値を読み取る

誰も手がかりを得ましたか?どこで間違ったのですか?

4

0 に答える 0