Я начал создавать небольшой игровой движок для самостоятельного проекта. При написании графической части движка я заметил утечку памяти, которая исчезает, когда я прекращаю использовать пары glClearColor и glPushMatrix / glPopMatrix.
Из того, что я исследовал, похоже, что это обычное явление, но я не нашел ответа на вопрос, почему это происходит.
Странно то, что утечка продолжается в течение минуты или двух, а затем просто останавливается (очень последовательно).
Используя диспетчер задач, он показывает 11 012K, когда утечка прекращается.
Дополнительные примечания: я не использую GLUT, но я использую GLEW_1.7 для сопоставленных vbo.
Есть идеи, что может быть причиной этого?
Это просто не проблема из-за чего-то странного, что делает OpenGL под капотом?
Это единственное место, которое я называю glClearColor, glPushMatrix и glPopMatrix.
void GraphicsDevice::updateCameraAndClear(IWindow* window)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(32, window->getAspectRatio(), 0.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(100.0f / 255, 149.0f / 255, 237.0f / 255, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_CULL_FACE); // Enable Culling
glCullFace(GL_BACK);
glEnable(GL_NORMALIZE);
glEnable(GL_POLYGON_SMOOTH);
}
void Engine::draw(void)
{
GraphicsDevice::Instance()->updateCameraAndClear(_window);
if ( !_states.empty() )
{
for(std::vector<IState*>::iterator i = _states.begin(); i != _states.end(); i++)
{
glPushMatrix();
(*i)->draw(this);
glPopMatrix();
}
}
}