En general, siempre se trata de lo fácil que es mantener y expandir su código. Mañana te das cuenta de que no te gusta la API de gráficos que estás usando actualmente y quieres cambiar. ¿Tendrá que pasar ahora por todas sus clases de objetos y cambiar todo, o todavía necesita cambiar su código en un punto central del proyecto?
Depende de lo que estén haciendo realmente sus objetos cuando llame a render (). Siempre y cuando solo envuelvan llamadas de método alrededor de su motor de gráficos, está completamente bien, ya que la lógica <-> distinción de gráficos aún se dará.
Por ejemplo, si sus métodos render () son básicamente métodos de conveniencia y se parecen a esto:
void MyClass::render(const Graphics &g)
{
g.draw(this);
}
o
void MyClass::render()
{
mySprite->render();
}
o
void MyClass::render()
{
mySprite->UseShader(thatshader);
mySprite->render();
}
o cerca de eso, no creo que sea un problema en absoluto.