среда, 15 июля 2015 г.

Про попытки изучать OpenGL снова

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

Комментариев нет:

Отправить комментарий