这么说来,纹理坐标的值不会大于1了,是这样吗?
> > 确实可以大于1
可是三维文件里的纹理坐标值有大于1的啊???
此外,是不是说根据纹理图象缩放的比例来改变纹理坐标就可以了
比如把120×20的图象缩放为128×32的图象后,相应的纹理 横坐标×(128/120),
纵坐标×(32/20)是这样吗?
> > 这个我认为你理解错了。(或者是你说的我理解错了)
应该是这样的。
无论什么纹理(我说的是二维的),你应该把它看成一个单位正方形。
(0,1)-----(1,1)
| | <------------------texture
| |
(0,0)-----(1,0)
它平铺在模型的表面。
无论模型的表面是什么形状,texture的四个顶点坐标是不变的。
当然,你也不是必须指定四个顶点中的任何一个(那么,你使用的就是纹理的一部分)。
事实上,你可以这样指定四个纹理的坐标,
glTexCoor3f(0.5,0.0),glVertex(0,0)
glTexCoor3f(0.9,0.0),glVertex(1,0)
glTexCoor3f(0.9,0.9),glVertex(1,1)
glTexCoor3f(0.0,0.5),glVertex(0,1)
你也可以指定纹理的坐标大于1(x,y),但大于1出现的现象,有些不好理解,我不知道算法。
感觉是有规律的。
////////////////////////
全属个人观点,不对的地方大家讨论。
> > 确实可以大于1
可是三维文件里的纹理坐标值有大于1的啊???
此外,是不是说根据纹理图象缩放的比例来改变纹理坐标就可以了
比如把120×20的图象缩放为128×32的图象后,相应的纹理 横坐标×(128/120),
纵坐标×(32/20)是这样吗?
> > 这个我认为你理解错了。(或者是你说的我理解错了)
应该是这样的。
无论什么纹理(我说的是二维的),你应该把它看成一个单位正方形。
(0,1)-----(1,1)
| | <------------------texture
| |
(0,0)-----(1,0)
它平铺在模型的表面。
无论模型的表面是什么形状,texture的四个顶点坐标是不变的。
当然,你也不是必须指定四个顶点中的任何一个(那么,你使用的就是纹理的一部分)。
事实上,你可以这样指定四个纹理的坐标,
glTexCoor3f(0.5,0.0),glVertex(0,0)
glTexCoor3f(0.9,0.0),glVertex(1,0)
glTexCoor3f(0.9,0.9),glVertex(1,1)
glTexCoor3f(0.0,0.5),glVertex(0,1)
你也可以指定纹理的坐标大于1(x,y),但大于1出现的现象,有些不好理解,我不知道算法。
感觉是有规律的。
////////////////////////
全属个人观点,不对的地方大家讨论。