纹理不在模型上显示

时间:2014-01-11 09:26:19

标签: c++ opengl 3d textures rendering

我有一个简单的纹理球体,地球环绕着它。模型显示阴影白色(由于光线简单),没有纹理显示。纹理本身成功加载到内存中,但从未实际显示。我的纹理/网格类中是否存在问题?

MAYA / OpenGL

enter image description here

纹理类

void Texture::Bind(GLenum TextureUnit)
{   
    glActiveTexture(TextureUnit);
    glBindTexture(m_textureTarget, m_textureID);
}

网格类:

void Mesh::Render()
{

    glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    glEnableVertexAttribArray(2);

    for (unsigned int i = 0; i < m_Entries.size(); i++) 
    {
        glBindBuffer(GL_ARRAY_BUFFER, m_Entries[i].VB);
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
        glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const GLvoid*) 12);
        glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const GLvoid*) 20);

        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Entries[i].IB);

        const unsigned int MaterialIndex = m_Entries[i].MaterialIndex;

        if (MaterialIndex < m_Textures.size() && m_Textures[MaterialIndex]) 
        {
            m_Textures[MaterialIndex]->Bind(GL_TEXTURE0);
        }

        glDrawElements(GL_TRIANGLES, m_Entries[i].NumIndices, GL_UNSIGNED_INT, 0);
    }

    glDisableVertexAttribArray(0);
    glDisableVertexAttribArray(1);
    glDisableVertexAttribArray(2);
    glDisable(GL_TEXTURE_2D);
}

0 个答案:

没有答案