[发明专利]一种GPU纹素取值方法有效
申请号: | 201911125535.0 | 申请日: | 2019-11-18 |
公开(公告)号: | CN110942417B | 公开(公告)日: | 2023-06-30 |
发明(设计)人: | 陈佳;韩立敏;吴晓成;姜丽云;张少锋;张骏 | 申请(专利权)人: | 中国航空工业集团公司西安航空计算技术研究所 |
主分类号: | G06T1/20 | 分类号: | G06T1/20 |
代理公司: | 北京清大紫荆知识产权代理有限公司 11718 | 代理人: | 娄华 |
地址: | 710065 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 gpu 纹素取值 方法 | ||
本发明涉及计算机图形学技术领域,尤其涉及一种GPU纹素取值方法,OpenGL2.0定义了纹理贴图纹素地址计算方法,但是纹素地址计算考虑因素较多,包括了纹理坐标环绕模式、缩小\放大纹理的过滤模式、纹理边框设置等,OpenGL2.0定义的算法细节不清楚特别是在纹素地址在边缘或者超过边界情况下,实现出来的效果与目前商用平台效果差异较大。因此,本发明基于OpenGL2.0定义的算法做了修正和补充,解决了GPU纹理贴图纹素地址计算问题,包括根据环绕模式对纹理坐标的修正和范围标记、根据过滤模式对纹素地址的修正、根据边框对纹素地址的修正、纹素取值。本发明结合OpenGL2.0定义的地址算法,融入对算法的修正和优化,实现了完整的纹理贴图纹素地址计算方法,纹理贴图效果与大多商用平台对等。
技术领域
本发明属于计算机图形学技术领域,涉及一种GPU纹素取值方法。
背景技术
在图形处理器芯片(下简称GPU)设计中,根据纹素地址进行纹素颜色的取值,OpenGL2.0定义了纹理贴图纹素地址计算方法,但是纹素地址计算考虑因素较多,包括了纹理坐标环绕模式、缩小\放大纹理的过滤模式、纹理边框设置等,OpenGL2.0定义的算法细节不清楚特别是在纹素地址在边缘或者超过边界情况下,实现出来的效果与目前商用平台效果差异较大。如何达到符合标准规定的纹素地址,并且纹理贴图效果又与目前商用平台一致或者靠近,这是需要解决的技术问题。
发明内容
本发明目的是提供一种GPU纹素取值方法。
本发明的技术解决方案是:
一种GPU纹素取值方法,该方法包括如下步骤:
(1)根据环绕模式对纹理坐标的修正和范围标记;
(2)根据过滤模式对纹素地址的修正;
(3)根据边框对纹素地址的修正;
(4)纹素取值。
进一步的,
所述(1)包括:
首先判断当前纹理坐标的环绕模式,
如果环绕模式是GL_CLAMP或GL_REPEAT,那么参照OpenGL2.0对各自环绕模式的坐标进行修正,并且纹理范围标记为false;
如果是其他的环绕模式,那么先参照OpenGL2.0计算各自环绕模式的坐标范围;
对于超过范围的坐标设置纹理范围标记为true;
否则为false;
最后对纹理坐标进行范围截取。
进一步的,所述(2)包括判断过滤模式,若是GL_NEAREST类,则对于(1)中所得的纹理坐标进行判断,
如果纹理坐标大于1.0的纹素地址,纹素地址取值为纹理图像维度;
如果纹理坐标不大于1.0,则参照OpenGL2.0标准进行纹素地址计算。
进一步的,所述(2)包括判断过滤模式,若是GL_LINEAR类,则,
首先基于(1)中计算所得纹理坐标,参照OpenGL2.0标准进行第1个纹素地址计算,再判断环绕模式,
GL_CLAMP,如果第1个纹素地址小于0,将第1个纹素地址赋值给第2个纹素地址,并将第1个纹素地址赋值为0;其他情况参照OpenGL2.0标准进行第2个纹素地址计算;
GL_REPEAT,如果第1个纹素地址小于0,将第1个纹素地址为0,第2个纹素地址为纹理图像维度减1,其他情况参照OpenGL2.0标准进行第2个纹素地址计算;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航空工业集团公司西安航空计算技术研究所,未经中国航空工业集团公司西安航空计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911125535.0/2.html,转载请声明来源钻瓜专利网。