SDK 4.1 を使用して構築された iPhone アプリに、IP リンクを介して opengl 3D シーンを送信しています。最初に FBO を使用して 3D シーンをレンダリングし、glReadPixels で読み取り、iPhone アプリに送信します。アプリが受け取ったピクセルデータをUIImageに変換すると、正しく表示されていることがわかります。しかし、opengl es 1.1 (iPhone 3G) を使用して glTexSubImage2D で同じデータを使用すると、何も表示されません。何がうまくいかないのでしょうか?glDrawPixels がサポートされていないため、glTexSubImage2D を使用しています。この問題を解決するための例/チュートリアルはありますか? どんな助けにも感謝します。
前もって感謝します。
Code -
- (id) initWithFrame: (CGRect) frame
{
.....
api = kEAGLRenderingAPIOpenGLES1;
m_context = [[EAGLContext alloc] initWithAPI:api];
glGenFramebuffersOES(1, &m_frameBuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_frameBuffer);
glGenRenderbuffersOES(1, &m_colorRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer);
glGenTextures(1, &m_tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
....
}
- (void) drawView: (CADisplayLink*) displayLink
{
glBindTexture(GL_TEXTURE_2D, m_tex);
glTexSubImage2D(GL_TEXTURE_2D, 0,0,0,
WIDTH, HEIGHT,
GL_BGRA,
//GL_RGBA,
GL_UNSIGNED_BYTE,
m_pixelData);
const GLfloat quadVertices[] = {
-1.0f, -1.0f, 0.0f,
-1.0f, 1.0f, 0.0f,
1.0f, 1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
-1.0f, -1.0f, 0.0f
};
// Sets up an array of values for the texture coordinates.
const GLfloat quadTexcoords[] = {
0.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 0.0f
};
glVertexPointer(3, GL_FLOAT, 0, quadVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, quadTexcoords);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_frameBuffer);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 5);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_colorRenderbuffer);
[m_context presentRenderbuffer:GL_RENDERBUFFER_OES];
}