Изучение OpenGL во время практики TDD (модульное тестирование)

Я запустил новый игровой проект и решил изучить и использовать OpenGL для него (проект разрабатывается одновременно для Windows и Linux). В то же время, я также очень заинтересован в разработке через тестирование и стараюсь приложить все усилия для написания своих модульных тестов, чтобы привести дизайн перед любым реальным кодом.

Тем не менее, я думаю, что мое отсутствие знаний может сбить меня с толку, и я продолжаю врезаться в стену, пытаясь написать свои модульные тесты для «рендеринга» частей кодовой базы. Я надеюсь, что кто-то может дать мне некоторое представление о том, как продолжить.

Я знаю, что мне нужно протестировать мои взаимодействия с OpenGL, а не сам OpenGL. Единственный способ, которым я могу это сделать, - это в некоторой степени абстрагировать OpenGL от остальной части моего кода, либо перехватывая вызовы функций OpenGL, либо создавая совершенно новый интерфейс класса, что позволяет мне создавать фиктивную версию этого класса для испытаний. (Еще лучше было бы абстрагировать их от набора функций, не относящихся к классам, в отдельном пространстве имен, а не абстракциях виртуальных классов, но я не понимаю, как я мог бы это высмеять.)

Однако, так как я все еще изучаю OpenGL, у меня есть лишь мимолетное представление о том, как должна выглядеть эта абстракция. Например, я должен обернуть каждый вызов OpenGL или сгруппировать их в функции более высокого уровня, основываясь на задачах, которые должны быть выполнены? Тонкие обертки будут делать немного больше, чем вызывать определенную функцию OpenGL, поэтому мне не нужно будет проверять их заранее, но я могу получить большое количество функций для переноса. С другой стороны, если я зайду слишком далеко и сгруппирую несколько вызовов OpenGL по задачам, я чувствую, что в конечном итоге начну с того, что начал, имея большой объем кода с использованием OpenGL, который сам должен быть протестирован перед использованием.

Где середина? Как мне научиться использовать OpenGL, в то же время проводя правильное модульное тестирование заранее?

Ответы на вопрос(6)

Ваш ответ на вопрос