2012-07-23 8 views
10

[iPadの-3] - [iOSの5.0] - [のObjective-C] - [XCodeの4.3.3] - [Cocos2D] - [OpenGLの| ES 2.0]なぜglBindFramebuffer(GL_FRAMEBUFFER、0)がcocos2D-iphoneで空白の画面になるのですか?

私はOpenGLを使用する方法を学んでいます| ES 2.0とは、フレームバッファオブジェクト(FBO)■

情報につまずいている:私は、描画のための余分な空想の取り扱いをたくさん持っているCocos2Dで働いている 。これが問題と関連しているかもしれないと私は想像しています。私の「HelloWorldののinit関数で :ココスのための「デフォルト」のフレームバッファを画面に描画し、実際のデフォルトのフレームバッファと異なる場合、これは

私の問題を-描くミスにつながる可能性があります。 m "クラス、" glBindFrameBuffer(GL_FRAMEBUFFER、0); "どこでも、私は単に空白の画面が表示されます!

-(id) init 
{ 
if((self=[super init])) 
{ 

CGSize winSize = [CCDirector sharedDirector].winSize; 

glBindFramebuffer(GL_FRAMEBUFFER, 0); 


CCSprite * spriteBG = [[CCSprite alloc] initWithFile:@"cocos_retina.png"]; 
spriteBG.position = ccp(512,384); 
//[self addChild:spriteBG z:1]; 

[self scheduleUpdate]; 
_mTouchDown = NO; 


_mSprite = [CCSprite spriteWithTexture:_mMainTexture]; 
_mSprite.position = ccp(512,384); 
[self addChild:_mSprite]; 

self.isTouchEnabled = YES; 

} return self;} 

何か基本的で明白なものがありませんか?

私が学んだ限り、関数 "glBindFramebuffer(GL_FRAMEBUFFER、0);"単にFramebufferを0に設定するだけで、画面に描画されるデフォルトのフレームバッファが適用されます。

+0

私はあなたがここにいるようです。ようこそ!あなたの問題が解決されたことを示す方法は、答えを受け入れ、質問に答えを入れず、タイトルに "解決済み"という言葉を追加することです。あなた自身の質問への回答を投稿して受け入れても大丈夫です。 (これを行うには数時間待たなければならないかもしれませんが、新しいユーザーには一時的な制限があります) –

+0

解決済みのことをするのが貧しいことは知らなかった。私はそれがすでに何度もこのように行われているのを見てきたので、pplzがそれをどうやってやったのかと仮定しました。私は8時間待って自分自身に答えようとしました。私は仕事中で、そのようなことには忍耐がありません。私は今編集して、明日答えを出すために再試行します。それでもうまくいかなければ、私はちょうどそれを残すでしょう。 – JThora

+0

最後の行を編集しました。あなたが問題の解決法を持っていないことを暗示しています。 –

答えて

24

問題は、iOSまたはCocos2D(またはその両方)が一意のフレームバッファを持つことができるという問題でした。 そのユニークなフレームバッファのハンドルは0と異なり、毎回異なる場合があります。

これを解決するには、現在のFBOのハンドルをつかんで、自分のカスタムFramebufferのものを作ってから、やり直してからFBOのハンドルを再適用する必要があります。

GLint oldFBO; 

元のフレームバッファオブジェクトを参照する変数が変数に現在使用FBOのハンドル( '閃光' である)を割り当て 'oldFBO'

作成
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &oldFBO); 

//here is when you would create or manipulate custom framebuffers.// 

その後、元のFBOを現在のFramebufとして設定しますfer

glBindFramebuffer(GL_FRAMEBUFFER, oldFBO); 
+1

はい!ありがとうございます!これはAndroidでも動作します。 – Tyguy7

+0

これは私を狂って運転していた...私を救ってくれてありがとう! – Matferib

+0

GAH!この馬鹿馬鹿に半日を失った...重要な手がかりのために多くの感謝。 –

関連する問題