大佬教程收集整理的这篇文章主要介绍了opengl-es – 为什么glBindFramebuffer(GL_FRAMEBUFFER,0)会在cocos2D-iphone中导致空白屏幕?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习如何使用OpenGL | ES 2.0,并且绊倒了帧缓冲区对象(FBO)
信息:
我正在与Cocos2D合作,这对于绘图有着非常多的花哨的处理.我想这可能与这个问题有关.如果cocos的“默认”帧缓冲区与绘制到屏幕的实际默认帧缓冲区不同,这可能会导致误删
我的问题:
在我的“Helloworld.m”类的init函数中,如果我放置“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即可应用绘制到屏幕的默认帧缓冲区.
要解决这个问题,我必须抓住当前的FBO手柄,做自定义的Framebuffer的东西,然后在完成之后重新应用FBO的句柄.
创建一个引用原始帧缓冲区对象的变量
GLint oldFBO;
将当前使用的FBO的句柄(这是一个“GLint”)分配给变量“oldFBO”
glGetIntegerv(GL_FRAMEBUFFER_BINDING,&oldFBO); //here is when you would create or manipulate custom framebuffers.//
之后,您将原始的FBO设置为当前的Framebuffer
glBindFramebuffer(GL_FRAMEBUFFER,oldFBO);
以上是大佬教程为你收集整理的opengl-es – 为什么glBindFramebuffer(GL_FRAMEBUFFER,0)会在cocos2D-iphone中导致空白屏幕?全部内容,希望文章能够帮你解决opengl-es – 为什么glBindFramebuffer(GL_FRAMEBUFFER,0)会在cocos2D-iphone中导致空白屏幕?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。