2011-10-20 18 views
1

レンダリングからテクスチャの設定用のフレームバッファオブジェクトを作成しています。 iPhoneシミュレータ上では正常に動作しますが、glCheckFramebufferStatus(GL_FRAMEBUFFER)関数はFBO作成の最後にGL_FRAMEBUFFER_UNSUPPORTEDを返します。私はここでのiOS 5デバイスのOpenGL ES 2.0でGL_FRAMEBUFFER_UNSUPPORTEDを取得する

とiPhone 3GS上でそれをテストしてい はコードです:

GLenum errNo; 
GLsizei width = 320; 
GLsizei height = 480; 
GLuint textureHandle; 
GLuint fboHandle; 

glGetError(); 

glGenTextures(1, &textureHandle); 
glBindTexture(GL_TEXTURE_2D, textureHandle); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_HALF_FLOAT_OES, NULL);    

glGenFramebuffers(1, &fboHandle); 
glBindFramebuffer(GL_FRAMEBUFFER,fboHandle);  
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureHandle, 0); 


errNo = glCheckFramebufferStatus(GL_FRAMEBUFFER); 
if(GL_FRAMEBUFFER_COMPLETE != errNo){ 
    printf("Unable to create FBO. errNo: %x\n",errNo); 
} 

私は無知です。この問題をどのようにデバッグすればよいですか?

+0

どこかGLエラーをチェックしているの? (glGetError()を使用して)。 –

+0

私のコードでglGetError()ステートメントを参照している場合は、以前のエラー番号をクリアするだけです。 – kal21

+0

私は単にコードの問題は表示されません、私は本からすべてのAPIをダブルチェックしました。私はまた、テクスチャサイズを32x48に減らしてメモリ問題かどうかを確認しましたが、それでも同じエラーが発生します。 – kal21

答えて

2

解決策が見つかりました。 GL_HALF_FLOATはiPhoneではサポートされていません。代わりにGL_UNSIGNED_BYTEを使用しました。

は動作しません:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_HALF_FLOAT_OES, NULL);    

作品:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_UNSIGNED_BYTE, NULL);