Пока выдались пара часов вчера вечером, засел за очередную задачу. Как 
вы помните, в прошлый раз я использовал LWJGL и нарисовал кружочек на 
белом фоне. Теперь мне хотелось как-то написать движение "камеры". 
Однако, с тех пор прошло много времени и я узнал, что, во-первых, то что
 я делал, это называлось Legacy OpenGL и так со времен появления OpenGL 
3.0 уже не делают. Так что я начал искать новые источники знаний и 
примеров. А еще я попробовал использовать другую библиотеку - JOGL. К 
ней нашлось немало примеров "более современного" кода - https://github.com/elect86/modern-jogl-examples.
 Это набор примеров к книге "Learning Modern 3D Graphic Programming", и 
он уже точно использует новые инструкции API. А это, в том числе, 
шейдеры и их загрузка. В общем, кружочки и шарики я пока не смог, но в 
общих чертах понять, как рисуется один белый треугольник на черном фоне 
из первого примера я уже понял и даже догадался, как сделать его 
розовым. Теперь интересным опытом будет переход все-таки к рисованию 
трехмерных объектов вроде пирамидок, движению камеры и накладыванию 
текстур и создания источников света. Зачем? Все-таки не уймусь, пока не 
смогу отображать рандомно генерированные множества планетарных систем. А
 что если научить их еще и "вращаться"? Добавить туда 2-Body 
гравитационные взаимодействия было еще веселее. Люди даже из этого 
умудрились сделать игрушку, например вот: http://universesandbox.com/2/.
 Правда, стоит, как по мне, непомерно много, так что я ее не пробовал 
сам и поиграл в нее по Youtube. Не то чтобы в ней нет кучи разных 
интересных возможностей, просто мне кажется, это не та игра, в которую 
можно играть долго и с удовольствием, как чуть более дешевые KSP или 
Minecraft.
Но это еще не всё. Пока я жаловался на тяжкую жизнь с 
OpenGL, мне вообще посоветовали, что лучше бы C++ изучать, тем более что
 современные его стандарты уже определяют улучшенный поиск утечек памяти
 и даже встроенную поддержку сборки мусора. Правда, для этого нужно даже
 от gcc пока отказываться и пользоваться clang. Всё это очень интересно и
 лежит далеко за пределами того, к чему я привык и чем давно пользуюсь. 
Ну, вроде как свежий воздух. Это, правда, не значит, что я начну 
страдать сразу от двух новых направлений - OpenGL и С++11. Все-таки, 
думаю, поразбираться в OpenGL можно и на Java. Все равно, когда мне 
говорят, что на С++ все будет "быстрее", я не всегда склонен в это 
верить. Я бы сказал, что все, скорее всего, будет просто "плавнее", без 
внезапных вмешательств сборщика мусора.
Не факт, что в итоге 
получится новый кубический движок для очередного клона Minecraft на C++,
 конечно, но в итоге я надеюсь в общих чертах понять, что можно делать с
 помощью всего этого, и, надеюсь, применять эти знания, в том числе, для
 создания чего-то полезного, например, на работе.
Комментариев нет:
Отправить комментарий