【问题标题】:Texture mapping problems with OpenGLOpenGL的纹理映射问题
【发布时间】:2011-08-30 14:43:57
【问题描述】:

我在使用 OpenGL 映射纹理时遇到了一些问题。这是我目前正在尝试使用 these textures 正确加载的模型的链接。

现在这里是一个指向所有相关文件所在目录的链接:http://karvis.kapsi.fi/

问题可以从img1.jpg看到

从 3d 仓库模型中可以看出,我用红色标记的那个区域不应该用纹理映射。问题是由于某种原因,整个模型都被映射了,尽管应该也有没有纹理的区域。还有没有纹理的相同模型:img2.jpg

还有我正在编译的代码:main.cpp。我正在使用 Asset Import Library 来导入 Collada 模型,并使用 FreeImage 来将图像转换为 RGB 格式。

有人知道为什么会这样吗?也许我向 OpenGL 传递了错误的参数,或者是因为我加载这些纹理的方式还是什么?

【问题讨论】:

    标签: c++ opengl collada texturing


    【解决方案1】:

    在渲染纹理之前,你需要做:

    glEnable(GL_TEXTURE_2D);
    glBindTexture(...);
    //render the texture
    

    完成纹理渲染后,您需要禁用纹理:

    glDisable( GL_TEXTURE_2D );
    

    我在您的代码中看到您在程序开始时启用了 2d 纹理。

    进一步查看您的代码,检查是否:

    if(mesh->HasTextureCoords(0))
    

    为您不希望渲染纹理的区域返回 true 或 false。

    【讨论】:

    • 似乎“if(mesh->HasTextureCoords(0))”永远不会返回 false。好像有点奇怪,可能是模型的问题。
    • @Joni 你确定它应该是 0,而不是别的吗?在 for 循环中有一个常量的接缝很奇怪
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2012-07-28
    相关资源
    最近更新 更多