c++ - Opengl - 使用纹理图集绘制圆柱体

标签 c++ opengl texture-mapping

//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/

相关文章:

python - 如何使用 PyVista 从列表/数组创建自定义 3D 对象?

c++ - Xcode: cstdlib 在全局命名空间中没有名为 "xxx"的成员

c++ - 如何为 Windows C++ 安装当前版本的 OpenGL?

swift - SceneKit 在同一几何体上使用两种具有不同纹理坐标的 Material

c++ - 旋转使用 OpenGL 绘制的 2D 对象

c++ - 使用 glm 沿四元数平移相机

opengl-es - 如何在 OpenGL ES 中绘制纯色曲面?

c++ - 在 GCC 中关闭 COW

c++ - 在计算中使用指向可索引集合之外的迭代器是否安全?

c++ - 如何使用 C++ 在抽象语法树中实现 if-else 分支