在释放模式下没有调用函数?

时间:2011-11-27 05:21:07

标签: c++ debugging function release

我在使用发布模式编译时没有调用函数时遇到问题,当应用无优化时,它在调试模式和发布模式下工作正常。任何人都知道它为什么这样做?我正在使用Visual C ++ Express 2010。

void CShader::SetUniforms(const GLuint NumUniforms, const LPUNIFORM Uniforms)
{
    if(!m_HasUniforms || !Uniforms)
        return;

    for(GLuint i = 0; i < NumUniforms; i++)
    {
        SetUniformData(i, Uniforms[i].Size, Uniforms[i].NumValues, Uniforms[i].Value);
    }
}

你可以看到它应该调用SetUniformData(...)NumUniforms次,但是在发布模式下它只是不调用它:s。我甚至不能在SetUniformData中放置一个断点,它只是告诉我没有可执行代码。

SetUniformData()函数如下所示:

void CShader::SetUniformData(const GLuint UniformIndex, const GLuint Size, const UINT NumValues, const GLvoid* Data)
{
    switch(Size)
    {
    case sizeof(float):
        glUniform1fv(m_UniformLocations[UniformIndex], NumValues, (GLfloat*)Data);
        break;

    case sizeof(Vector2f):
        glUniform2fv(m_UniformLocations[UniformIndex], NumValues, (GLfloat*)Data);
        break;

    case sizeof(Vector3f):
        glUniform3fv(m_UniformLocations[UniformIndex], NumValues, (GLfloat*)Data);
        break;

    case sizeof(Vector4f):
        glUniform4fv(m_UniformLocations[UniformIndex], NumValues, (GLfloat*)Data);
        break;

    case sizeof(Matrix33f):
        glUniformMatrix3fv(m_UniformLocations[UniformIndex], NumValues, GL_FALSE, (GLfloat*)Data);
        break;

    case sizeof(Matrix44f):
        glUniformMatrix4fv(m_UniformLocations[UniformIndex], NumValues, GL_FALSE, (GLfloat*)Data);
        break;

    default: break;
    }
}

0 个答案:

没有答案