[发明专利]一种实现OpenGL累积操作的方法及装置有效
申请号: | 201811440832.X | 申请日: | 2018-11-29 |
公开(公告)号: | CN109785417B | 公开(公告)日: | 2023-06-09 |
发明(设计)人: | 解文华;熊庭刚;张雁 | 申请(专利权)人: | 武汉凌久微电子有限公司 |
主分类号: | G06T15/00 | 分类号: | G06T15/00;G06T15/04;G06T15/50 |
代理公司: | 武汉泰山北斗专利代理事务所(特殊普通合伙) 42250 | 代理人: | 朱志勇 |
地址: | 430000 湖北省武汉*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 opengl 累积 操作 方法 装置 | ||
1.一种实现OpenGL累积操作的方法,其特征在于,包括:
步骤S1、保存图形上下文当前状态,将所述图形上下文当前状态设置为默认值,并根据累积模式设置颜色掩码;
步骤S2、获取当前累积缓冲区与颜色缓冲区的相关信息,其中,所述相关信息至少包括存放图像的尺寸、格式和数据首地址;
步骤S3、创建两个纹理对象,将所述纹理对象分别绑定到纹理单元0和纹理单元1,并将累积缓冲区中图像上传至纹理单元0,将颜色缓冲区中图像上传至纹理单元1;
步骤S4、根据当前累积模式,将累积缓冲区或颜色缓冲区设置为GPU渲染目标;
步骤S5、根据当前累积模式,载入特定的预备顶点着色器和片段着色器,以获得特定纹理贴图效果;
步骤S6、GPU根据所述顶点着色器和所述片段着色器进行渲染,并将渲染结果存放到所述GPU渲染目标中;
其中所述步骤S4具体为:
当所述累积模式为GL_ACCUM、GL_LOAD、GL_MULT或GL_ADD时,将累积缓冲区设为GPU渲染目标;
当所述累积模式为GL_RETURN时,将颜色缓冲区设为GPU渲染目标;
所述步骤S5具体为:
若累积模式为GL_ACCUM时,则载入的片段着色器的输出颜色值为:gl_FragColor=accumValue*texture2D(sampler0,vTexcoor0)+texture2D(sampler1,vTexcoor1);
若累积模式为GL_LOAD时,则载入的片段着色器的输出颜色值为:gl_FragColor=accumValue*texture2D(sampler1,vTexcoor1);
若累积模式为GL_RETURN或GL_MULT时,则载入的片段着色器的输出颜色值为:gl_FragColor=accumValue*texture2D(sampler0,vTexcoor0);
若累积模式为GL_ADD时,则载入的片段着色器的输出颜色值为:gl_FragColor=accumValue+texture2D(sampler0,vTexcoor0);
其中,gl_FragColor为片段着色器最终输出的颜色值,accumValue为片段着色器的累积系数,函数texture2D(sampler0,vTexcoor0)表示返回纹理单元0在坐标vTexcoor0处的颜色采样值,函数texture2D(sampler1,vTexcoor1)表示返回纹理单元1在坐标vTexcoor1处的颜色采样值;
所述步骤S6具体为:
执行绘制矩形命令,将所述矩形的4个顶点坐标设定为{-1.0, -1.0, 1.0, 1.0}、{1.0, -1.0, 1.0, 1.0}、{1.0, 1.0, 1.0, 1.0}、{-1.0, 1.0, 1.0, 1.0},其中,所述顶点坐标的格式表示为{
所述执行绘制矩形命令还包括:
将所述顶点坐标对应的纹理单元0和纹理单元1的纹理坐标,分别设定为{0.0, 0.0}、{1.0, 0.0}和{1.0, 1.0}、{0.0, 1.0},其中,所述纹理坐标的格式表示为{s, t}。
2.根据权利要求1所述的方法,其特征在于,所述步骤S6还包括:
步骤S7、恢复所述图形上下文当前状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉凌久微电子有限公司,未经武汉凌久微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811440832.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种三维动作捕捉系统及其方法
- 下一篇:基于视觉感知模型的注视点渲染优化算法