当前位置: 首页>>代码示例>>C++>>正文


C++ TextureManager::getTextureId方法代码示例

本文整理汇总了C++中TextureManager::getTextureId方法的典型用法代码示例。如果您正苦于以下问题:C++ TextureManager::getTextureId方法的具体用法?C++ TextureManager::getTextureId怎么用?C++ TextureManager::getTextureId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TextureManager的用法示例。


在下文中一共展示了TextureManager::getTextureId方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: create

void GLGameModel::create()
{
    GLuint currentTex = 65535;
    TextureManager *tm = GAME->getTextureManager();

    glNewList(displayListID, GL_COMPILE);

    if(getIsLightingEnabled()) glEnable(GL_LIGHTING);

    for(int i = 0; i < glModelFaces.size(); ++i)
    {
        GLModelFace face = glModelFaces.at(i);

        // set or unset texture if neccessary
        if(!face.materialName.isEmpty() &&
            materials.contains(face.materialName))
        {
            QString textureFileName = materials.value(face.materialName);
            GLuint texId = tm->getTextureId(textureFileName);
            if(currentTex != texId)
            {
                glDisable(GL_COLOR_MATERIAL);
                glEnable(GL_TEXTURE_2D);
                glBindTexture(GL_TEXTURE_2D, texId);
                GAME->getGLWidget()->qglColor(Qt::white);
                currentTex = texId;
            }
        }
        else
        {
            if(currentTex != 0)
            {
                glEnable(GL_COLOR_MATERIAL);
                currentTex = 0;
                glBindTexture(GL_TEXTURE_2D, 0);
                glDisable(GL_TEXTURE_2D);
            }
        }

        // draw the model

        glBegin(GL_POLYGON);

        for(int n = 0; n < face.vertexIds.size(); ++n)
        {
            int x = face.vertexIds.at(n);

            if(x < 0 || x >= vertices.size()) continue;

            QVector3D v = vertices.at(x);

            if(n < face.textureCoordIds.size() && currentTex > 0)
            {
                x = face.textureCoordIds.at(n);
                QVector2D vt = textureCoords.at(x);
                glTexCoord2f(vt.x(), vt.y());
            } 

            if(n < face.vertexNormalIds.size())
            {
                x = face.vertexNormalIds.at(n);
                QVector3D vn = vertexNormals.at(x);
                glNormal3f(vn.x(), vn.y(), vn.z());
            }

            glVertex3f(v.x(), v.y(), v.z());
        }

        glEnd();
    }

    glDisable(GL_LIGHTING);
    glDisable(GL_TEXTURE_2D);
    glEndList();

    createFrame();

    created = true;
}
开发者ID:rku,项目名称:Settleboard,代码行数:79,代码来源:GLGameModel.cpp


注:本文中的TextureManager::getTextureId方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。