OpenGL ES 纹理贴图的重复与嵌位概念理解
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
以下有一篇转载的Android中关于纹理贴图规则的文章,很不多。
不过我这里是想要深入研究如果让贴图自动根据大小进行阵列排布,这个在 3DMax 中曾经见过,不过后来忘了,再问3D美工,就变成用坐标了,那个确实不是我想要的,但3DMax我确实不太熟悉,我了解3DMax充其量也就是为了明白三维的概念和操作方式,并不想深入去掌握3DMax这一三维美工熟练工种。
当纹理坐标小于等于1.0时,会在这张纹理贴图中取指定百分比的部分;
当纹理坐标大于1.0时,按参数指示,可以进行重复,那么大于的值如何给定呢?
这里考虑,是否可以用几何体面的宽和高与图片的宽和高进行比对来得到这个值,这样图片就会按原始尺寸比例去绘制,其它部分就进行复制重复,形成阵列效果。
但图片的尺寸是像素,几何体的尺寸是什么呢?是mm ?再或者用栅格化后的片元尺寸?这些个概念暂时还搞不清,三维到二维的尺寸如何换算?纹理贴图与三维坐标尺寸如何比较,这个可能就成为焦点问题。
本贴虽未解决问题,但至少提出了问题,同时就是找到了一个研究的方向。所谓研究,不是学习现成的资料,而是对未知方向的问题,通知分析找到去学习和有机组合的方式的过程,而没有现成的完整的资料,拿来看会了就行。所以学习和研究是有区别的。
以下有关 glTexParameter 函数参数值的官方描述截取,我们来翻译一下看看:
-
设置纹理坐标的包装参数为
GL_CLAMP_TO_EDGE
,GL_MIRRORED_REPEAT 或
GL_REPEAT。
-
GL _CLAMP_TO_EDGE 使坐标夹紧在 这样的范围内 1 2N 1 - 12N (官方就这么写的,我也不知道是什么东西),这里 N 纹理在夹紧方向上的大小。
-
GL_REPEAT 使 s 坐标的整数部分被忽略; GL 只使用小数部分,从而创建一个重复构形。
GL_MIRRORED_REPEAT 在纹理坐标的整数部分是奇数时,使 s 坐标设置为纹理坐标的小数部分;如果整数部分是偶数,那么 s 坐标被设置成 1 - 小数部分,这里 s 的小数部分代表 s 的去掉整数部分后的小数部分。初始,GL_TEXTURE_WRAP_S 设为 GL_REPEAT。
Sets the wrap parameter for texture coordinate s to eitherGL_CLAMP_TO_EDGE
,GL_MIRRORED_REPEAT
, orGL_REPEAT
.GL_CLAMP_TO_EDGE
causes s coordinates to be clamped to the range 1 2N 1 - 12N , where N is the size of the texture in the direction of clamping.GL_REPEAT
causes the integer part of the s coordinate to be ignored; the GL uses only the fractiona
GL_TEXTURE_WRAP_S