博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL MSAA多采样中的蒙版(stencil)使用
阅读量:4071 次
发布时间:2019-05-25

本文共 2075 字,大约阅读时间需要 6 分钟。

在OpenGL中进行MSAA多采样时,需要进行如下设置FBO

glGenFramebuffers(1, &mfbo);		glBindFramebuffer(GL_FRAMEBUFFER, mfbo);		//create color render buffer		glGenRenderbuffers(1, &colorBuffer);		glBindRenderbuffer(GL_RENDERBUFFER, colorBuffer);		glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4 /* 4 samples */, GL_RGBA8, width, height);		glBindRenderbuffer(GL_RENDERBUFFER, 0);		glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorBuffer);		// multi sampled depth buffer		glGenRenderbuffers(1, &depthBuffer);		glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);		glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4 /* 4 samples */, GL_RGBA8, width, height);		glBindRenderbuffer(GL_RENDERBUFFER, 0);		glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);		GLenum result = glCheckFramebufferStatus(GL_FRAMEBUFFER);		if (result == GL_FRAMEBUFFER_COMPLETE) {			isMultiFBODone = true;		}		else {			isMultiFBODone = false;		}		glBindFramebuffer(GL_FRAMEBUFFER, 0);
如果程序中还需要使用蒙版缓冲(stencil buffer),则需要将此FBO设置为如下格式:

glGenFramebuffers(1, &mfbo);		glBindFramebuffer(GL_FRAMEBUFFER, mfbo);		//create color render buffer		glGenRenderbuffers(1, &colorBuffer);		glBindRenderbuffer(GL_RENDERBUFFER, colorBuffer);		glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4 /* 4 samples */, GL_RGBA8, width, height);		glBindRenderbuffer(GL_RENDERBUFFER, 0);		glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorBuffer);		// multi sampled depth buffer		glGenRenderbuffers(1, &depthBuffer);		glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);		glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4 /* 4 samples */, GL_DEPTH24_STENCIL8, width, height);		glBindRenderbuffer(GL_RENDERBUFFER, 0);		glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);		GLenum result = glCheckFramebufferStatus(GL_FRAMEBUFFER);		if (result == GL_FRAMEBUFFER_COMPLETE) {			isMultiFBODone = true;		}		else {			isMultiFBODone = false;		}		glBindFramebuffer(GL_FRAMEBUFFER, 0);
然后在根据需要写关于蒙版的代码即可

转载地址:http://ioeji.baihongyu.com/

你可能感兴趣的文章
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>