Пока выдались пара часов вчера вечером, засел за очередную задачу. Как
вы помните, в прошлый раз я использовал 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++,
конечно, но в итоге я надеюсь в общих чертах понять, что можно делать с
помощью всего этого, и, надеюсь, применять эти знания, в том числе, для
создания чего-то полезного, например, на работе.
Комментариев нет:
Отправить комментарий