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

Как показала практика писать весь код одному тяжеловато. В качестве обоснования возможности в одиночку создать интересное и популярное приложение я опирался на пример Перссона с Minecraft. Но теперь я понимаю, что именно позволило ему сравнительно быстро разработать прототип - cекрет (в основном) в использовании Java. Это просто огромный конструктор, в котором есть все для создания практически любого приложения. При этом почти нет необходимости, как при работе на C/C++, искать и изучать найденные библиотеки - почти все каталогизировано, описано, документировано и находится в одном месте - только бери и собирай. В этом, несомненно, огромное преимущество разработки на Java. Но это-же и слабое место. При работе с С/С++ я как-то чувствую себя более свободно, что ли… Увеличение продолжительности времени на разработку в этом случае является платой за большую свободу.

Я думаю, более оправданым для меня будет не пытаться полностью реализовать собственный графический движок, а выбрать из имеющихся открытых. Под термином “графический движок” я подразумеваю ту часть кода приложения, которая взаимодействует с графической подсистемой компьютера, передавая в конвеер рендера данные для построения объектов. Возможно, с базовым набором готовых шейдеров. Но модули, ответственные за построение, модификацию и хранению графических объектов разрабатываются мной (пока?) как независимая часть приложения.