OpenGl纹理包裹

时间:2019-02-01 22:09:31

标签: opengl

GL_MIRRORED_REPEAT包装时,OpenGL如何计算新的纹理坐标?我的意思是给定(x,y)应用什么公式? https://open.gl/textures

1 个答案:

答案 0 :(得分:2)

请参见OpenGL 4.6 API Core Profile Specification; 8.14.2 Coordinate Wrapping and Texel Selection; page 257, Table 8.20

MIRRORED_REPEAT : (size − 1) − mirror(coord mod (2 × size)) − size) 
     

其中mirror(a)返回if a ≥ 0,否则返回−(1 + a)

这意味着如果纹理平铺,则按纹理绘制偶数平铺,而镜像绘制奇数平铺。

如果纹理坐标是在[0,1],[2,3],[4,5],...,那么涡卷函数返回一个对应的坐标范围内[0 ,1]。
如果纹理坐标是[1,2],[3,4],[5,6],...,那么涡卷函数返回一个对应的在范围[1镜像坐标,0 ]

涡卷函数应用于单独每个坐标和每个坐标一个单独的,不同的涡卷功能可以被设置。