Em geral, é sempre sobre como é fácil manter e expandir seu código. Amanhã você descobrirá que não gosta da API de gráficos que está usando no momento e deseja mudar. Agora você terá que passar por todas as suas classes de objetos e mudar tudo ou ainda precisará alterar seu código em um ponto central do projeto?
Depende do que seus objetos estão realmente fazendo quando você chama render (). Contanto que eles apenas envolvam as chamadas de método em seu mecanismo gráfico, tudo ficará bem, pois a lógica <-> ainda será apresentada.
Por exemplo, se seus métodos render () são basicamente métodos de conveniência e se parecem com isso:
void MyClass::render(const Graphics &g)
{
g.draw(this);
}
ou
void MyClass::render()
{
mySprite->render();
}
ou
void MyClass::render()
{
mySprite->UseShader(thatshader);
mySprite->render();
}
ou perto disso, não acho que seja um problema.