【发布时间】:2012-10-29 12:02:25
【问题描述】:
我希望在立方体上绑定纹理(使用 GlutSolidCube 而不是 glvertex 创建立方体)但整个纹理都已绑定。在图像文件中,我将所有纹理放在一起(为了速度并且因为老师要求),我只希望绑定部分纹理。我怎样才能做到这一点????
【问题讨论】:
我希望在立方体上绑定纹理(使用 GlutSolidCube 而不是 glvertex 创建立方体)但整个纹理都已绑定。在图像文件中,我将所有纹理放在一起(为了速度并且因为老师要求),我只希望绑定部分纹理。我怎样才能做到这一点????
【问题讨论】:
纹理是纹理绑定的单位。如果你想“切掉”纹理的一部分,你可以通过调整你使用的纹理坐标来实现。
不要使用完整的 0..1 范围,而是使用与纹理内的子纹理位置匹配的较小值。
【讨论】:
你想做的事情是不可能的,因为glutSolidCube does not generate texture coordinates。
但是,您还会注意到,对该问题的回答表明您可以使用以下命令让 OpenGL 在调用 glutSolidCube 时为您生成纹理坐标:
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
有关使用 OpenGL 的自动纹理坐标生成的更多信息,请访问here。但是,我想指出,这似乎来自即时模式 OpenGL 的时代,它已被弃用。此外,GLUT 不再维护,但 freeglut 是。
总而言之,您最好使用glVertex 调用并指定您自己的特定纹理坐标,正如 unwind 所建议的那样。您可以尝试 OpenGL 的纹理坐标生成,但它可能过于严格,无法处理您需要的内容。
【讨论】: