OpenGL glRenderbufferStorage 函数详解

OpenGL glRenderbufferStorage 函数详解


glRenderbufferStorage 指定存储在 renderbuffer 中图像的宽高以及颜色格式,并按照此规格为之分配存储空间,当一个渲染缓存被创建,它没有任何数据存储区域,所以我们还要为他分配空间。这可以通过用glRenderbufferStorage()实现。第一个参数必须是GL_RENDERBUFFER。第二个参数可以是用于颜色的(GL_RGBGL_RGBAetc.),用于深度的(GL_DEPTH_COMPONENT),或者是用于模板的格式(GL_STENCIL_INDEX)。Widthheight是渲染缓存图像的像素维度。

widthheight必须比GL_MAX_RENDERBUFFER_SIZE小,否则将会产生GL_UNVALID_VALUE错误。


注意在iOS glRenderbufferStorage需要使用 renderbufferStorage:fromDrawable 函数来代替,至于原因请 点击参考 iOS OpenGL renderbufferStorage:fromDrawable 方法详解


设置缓冲区对象的通用方法:


  //帧缓冲区对象

 glGenFramebuffers1& fboId); 

 glBindFramebufferGL_FRAMEBUFFERfboId); 

 

 //渲染缓冲区作为颜色缓冲区

 glGenRenderbuffers1& colorBuffer); 

 glBindRenderbufferGL_RENDERBUFFERcolorBuffer); 

 glRenderbufferStorageGL_RENDERBUFFERGL_RGBAwidthheight); 

 glBindRenderbufferGL_RENDERBUFFER0); 

 //将渲染缓冲区作为颜色缓冲区附加到fbo 

 glFramebufferRenderbufferGL_FRAMEBUFFERGL_COLOR_ATTACHMENT0GL_RENDERBUFFERcolorBuffer); 

 

 //将缓冲区渲染为深度缓冲区

 glGenRenderbuffers1& depthBuffer); 

 glBindRenderbufferGL_RENDERBUFFERdepthBuffer); 

 glRenderbufferStorageGL_RENDERBUFFERGL_DEPTH_COMPONENTwidthheight); 

 glBindRenderbufferGL_RENDERBUFFER0); 

 //将渲染缓冲区作为深度缓冲区附加到fbo 

 glFramebufferRenderbufferGL_FRAMEBUFFERGL_DEPTH_ATTACHMENTGL_RENDERBUFFERdepthBuffer); 

 

 glGenRenderbuffers1& stencilBuffer); 

 glBindRenderbufferGL_RENDERBUFFERstencilBuffer); 

 glRenderbufferStorageGL_RENDERBUFFERGL_STENCIL_INDEXwidthheight); 

 glBindRenderbufferGL_RENDERBUFFER0); 

 //将渲染缓冲区附加到fbo作为模板缓冲区

 glFramebufferRenderbufferGL_FRAMEBUFFERGL_STENCIL_BUFFERGL_RENDERBUFFERstencilBuffer); 


参考文章:http://www.ithao123.cn/content-704097.html


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值