【问题标题】:how to bind part of the texture opengl如何绑定部分纹理opengl
【发布时间】:2012-10-29 12:02:25
【问题描述】:

我希望在立方体上绑定纹理(使用 GlutSolidCube 而不是 glvertex 创建立方体)但整个纹理都已绑定。在图像文件中,我将所有纹理放在一起(为了速度并且因为老师要求),我只希望绑定部分纹理。我怎样才能做到这一点????

【问题讨论】:

    标签: c++ c opengl textures


    【解决方案1】:

    纹理是纹理绑定的单位。如果你想“切掉”纹理的一部分,你可以通过调整你使用的纹理坐标来实现。

    不要使用完整的 0..1 范围,而是使用与纹理内的子纹理位置匹配的较小值。

    【讨论】:

    • 我觉得你理解错了问题。我希望在使用 glutSolidCube 创建的对象上绑定纹理。问题是我使用相同的函数创建了一个完整的表。我希望将纹理的不同部分加载到这个立方体上,并将不同的部分加载到那个立方体上。而且由于我没有使用 glvertex 函数,我无法使用 glTexCoord2d(U,V) 加载部分纹理。
    • 顺便说一句,它也可以有一个 C 标签。 Opengl 可以与 C 或 C++ 一起使用
    • @macrian 还有 Java、Clojure 和 Smalltalk。但这并不意味着您应该为过去 15 年中使用的每种语言添加标签。他回答了你的问题,调整UV坐标。如果您不能使用 glutSolidCube 做到这一点,请不要使用 glutSolidCube。
    • 不,添加C作为标签的重点是因为C和C++相似。非常相似。 (我的意思是类似的,我的意思是 g++ 只识别 C 代码)顺便说一下,因为他的答案不适合我的问题,我不能接受这个答案.....我需要我的问题的答案,而不是随机的方式来做.
    【解决方案2】:

    你想做的事情是不可能的,因为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 的纹理坐标生成,但它可能过于严格,无法处理您需要的内容。

    【讨论】:

    • 现在这是一个答案,不知道它是否会起作用,或者您是否正确并且完全不可能:P 我明天会尝试(现在是凌晨 2 点在我的国家)并让您知道
    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 2011-07-13
    • 2015-02-26
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多