Qt删除OpenGLFramebufferObject的函数实现(清理帧缓存)

在opengl中,实现FBO的创建和删除需要用到这两个函数

glGenFramebuffersEXT(1, &fbo);

glDeleteFramebuffersEXT(1, &fbo);

然而在Qt中却找不到glDeleteFramebuffersEXT这个函数,而可以找到这个函数

 glDeleteFramebuffers(1,&fbo);

//inline void QOpenGLFunctions::glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)

具体函数参数实现如上,具体函数参考OenglAPI的文档

Name

glDeleteFramebuffers — delete framebuffer objects

C Specification

void glDeleteFramebuffers(GLsizei n,
 GLuint *framebuffers);

Parameters

n

Specifies the number of framebuffer objects to be deleted. 指定要删除的帧缓冲区对象的数量。

framebuffers

A pointer to an array containing n framebuffer objects to be deleted. 指向包含要删除的n个帧缓冲区对象的数组的指针。

Description

glDeleteFramebuffers deletes the n framebuffer objects whose names are stored in the array addressed by framebuffers. Unused names in framebuffers that have been marked as used for the purposes of glGenFramebuffers are marked as unused again. The name zero is reserved by the GL and is silently ignored, should it occur in framebuffers, as are other unused names. Once a framebuffer object is deleted, its name is again unused and it has no attachments. If a framebuffer that is currently bound to one or more of the targets GL_DRAW_FRAMEBUFFER or GL_READ_FRAMEBUFFER is deleted, it is as though glBindFramebuffer had been executed with the corresponding target and framebuffer zero.

glDeleteFramebuffers删除其名称存储在由framebuffer寻址的数组中的n个framebuffer对象。
帧缓冲区中未使用的名称已被标记为用于glGenFramebuffer的用途再次被标记为未使用。 
GL保留了名称零,如果它出现在帧缓冲区中,则它会被静默忽略,就像其他未使用的名称一样。
删除帧缓冲区对象后,其名称将再次未使用且没有附件。
如果当前绑定到一个或多个目标GL_DRAW_FRAMEBUFFER或GL_READ_FRAMEBUFFER的一个帧缓冲区被删除,则好像已经用相应的目标和帧缓冲区零执行了glBindFramebuffer。

Errors

GL_INVALID_VALUE is generated if n is negative.

在Qt的具体实现中,我们可以这么操作,

    QOpenglFrameObject *FBO = new QOPenglFrameObject(QSzie(size,size));
    GLuint fbo = FBO->handle();//返回此帧缓冲对象的OpenGL帧缓冲对象句柄

    glDeleteFramebuffers(1,&fbo);
    delete FBO;
    FBO= null;

 如此便可以实现对帧对象的清理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值