Aprendendo OpenGL enquanto pratica TDD (teste de unidade)

Iniciei um novo projeto de jogo e decidi aprender e usar o OpenGL para ele (o projeto está sendo desenvolvido simultaneamente no Windows e Linux). Ao mesmo tempo, também estou muito interessado no desenvolvimento orientado a testes e estou tentando fazer o meu melhor para escrever meus testes de unidade para liderar o design antes de qualquer código real.

No entanto, acho que minha falta de conhecimento pode estar me atrapalhando, e continuo batendo um muro ao tentar escrever meus testes de unidade para as partes "renderizadas" da base de código. Espero que alguém possa me dar algumas dicas sobre como continuar.

Eu sei que preciso testar minhas interações com o OpenGL, e não com o próprio OpenGL. A única maneira de ver isso é abstraindo o OpenGL do restante do meu código até certo ponto, interceptando chamadas de função do OpenGL ou criando uma interface de classe totalmente nova, permitindo que eu crie uma versão simulada dessa classe para os testes. (Melhor ainda seria abstraí-las para um conjunto de funções que não são de classe em um espaço para nome separado, em vez de abstrações de classe virtual, mas não vejo como eu poderia zombar disso.)

No entanto, como ainda estou aprendendo o OpenGL, só tenho uma ideia de como deve ser essa abstração. Por exemplo, devo encerrar cada chamada do OpenGL ou agrupá-las em funções de nível superior com base nas tarefas a serem realizadas? Os invólucros finos fariam pouco mais do que chamar uma função OpenGL específica, portanto não precisaria testá-los antes, mas poderia terminar com um grande número de funções a serem empacotadas. Por outro lado, se eu for longe demais e agrupar várias chamadas do OpenGL por tarefa, sinto que vou terminar onde comecei, tendo um grande corpo de código usando o OpenGL que precisa ser testado antes do uso.

Onde fica o meio termo? Como eu aprendo a usar o OpenGL enquanto, ao mesmo tempo, faço testes de unidade adequados com antecedência?

questionAnswers(6)

yourAnswerToTheQuestion