//component
glRotatef((GLfloat)-90, 1, 0, 0);
gluCylinder(qObj,t_width/2,t_width/2,t_height+2*UDwall, 20, 20);
glRotatef((GLfloat)90, 1, 0, 0);
我想画一个圆柱体,贴上纹理部分。
glBindTexture(GL_TEXTURE_2D, texName[1]);//+
但不像 glVertex3f,当我绑定(bind)一个不能使用 TexCoord 完成的纹理时。 (所以只打印了整个纹理;ㅅ;)
首先是我可以做些什么来调整纹理部分。
其次是(有人建议使用纹理图集)我可以将纹理的最大坐标(0.0~1.0)更改为其他数字吗?
最佳答案
您可以使用 TextureMatrix 来转换纹理的坐标,以便所需的矩形形状(来自纹理 altas)位于正确的位置。
假设您想要为坐标为 (x,y)
和维度为 (a,b)
的矩形制作纹理。我们在这里想要实现的是让纹理位于 (0,0)
for (x,y)
和 (1,1)
对于 (x+a, y+b)
。
解决方案
使用纹理矩阵
通过 (-x, -y)
翻译
按 (1.0/a, 1.0/b)
关于c++ - Opengl - 使用纹理图集绘制圆柱体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480173/