00 C++17 & OpenGL Красота в коде

2 794

00 C++17 & OpenGL Красота в коде

В жизни каждого человека есть то любовь к которому он пронес через всю жизнь. В моей жизни такой любовью был язык программирования С++. Встреча с ним состоялась в те далекие времена, когда в продаже появились первые нормальные компьютеры с 486 процессором, Windows 95 и Visual C++ 6.0.

В то время С++ только родился и большинство профессиональных программистов восприняло его в штыки - он требовал совершенно другого стиля мышления. Как в той истории про 40-ножку, которую спросили с какой ноги она начинает ходить только наоборот. От способа описания какой ногой и куда ходить перешли к определению самой 40-ножки, а какой ногой она ходит - пусть сама разбирается.

Справедливости ради, нужно сказать, что большинство программистов быстро оценили всю мощь нового языка - он позволил создать программы, которые сами стали писать программы.

А в 2011, 2014 и 2017 годах произошло рождение бабочки из куколки старого С++. Сейчас написано достаточно книг об этом новом С++. Одно «но» - их очень скучно читать. И это проявляется с двух сторон - вы вручную набираете код и вам это быстро надоедает. Или вы используете готовый код, который предлагают авторы книг - вы его скопировали, он заработал и ... вы его благополучно забыли. А все потому, что пример там правильные, но НИ О ЧЕМ.

Решение пришло, как всегда, неожиданно - читая книгу «Бьярне Страуструп. Программирование. Принципы и практика с использованием С++. Второе издание. Москва • Санкт-Петербург • Киев . 2016», я обнаружил, что целых пять глав плюс одно приложение он посвятил графической библиотеке FLTK.

В старых С++ была собственная графическая библиотека, которая подключалась к проекту через файл «graphics.h» и в большинстве случаев ее вполне хватало. Но в дальнейшем она тихо исчезла.

Однако FLTK предоставляет возможность программирования только двухмерной графики. Для трехмерной она использует OpenGL.

И я подумал - а зачем мне посредник? Почему бы не использовать OpenGL напрямую?

И это оказалось именно той фишкой, которая сделала процесс изучения С++17 не просто интересным, а по-настоящему увлекательным.

Все привыкли, что графическая программа это, как минимум, несколько десятков строк кода, который так сразу и не поймешь. Попробуйте, например, написать простейшее окно под Виндовс.

А теперь предлагаю оценить всю мощь и красоту С++17 - вот минимальная РАБОЧАЯ программа на С++ и OpenGL:

#include <GL/glut.h>

int main()

{

   glutCreateWindow("Small program");

   glutDisplayFunc([]{});

   glutMainLoop();

}

для сравнения минимальная программа на «чистом» С++:

#include <iostream>

int main()

{

   std::cout << "Hello, World!" << std::endl;

   stl::cin.get();

}

Обалдеть! Графическая программ всего НА ОДНУ СТРОЧКУ больше.

И вот у меня есть желание поделится этой красотой - красивыми бывают не только музыка или любое другое искусство, но и программный код - это тоже ОЧЕНЬ КРАСИВО.

Я не буду рассуждать на темы «почему?» - для этого есть специальная литература. Я буду показывать «как» сделать то или другое с чем у меня возникали проблемы и как красиво их можно решить на С++17.

Единственное - это первая и последняя моя статья на эту тему на КОНТе. Основная проблема с ним - перестали приходить извещения на почту.

Для тех, кого это заинтересует - буду писать в своем ЖЖ

http://wlad55wlad.livejournal.com/


"Можно разбить "Южмаш" сверху, а внизу будет все работать": Первое боевое применение межконтинентальной убийцы ПРО

Русские ударили по Украине ракетой-носителем ядерного оружия. Под раздачу попало легендарное космическое предприятие. НАТО пока переваривает новость. Подробности читайте в материале "Но...

Реакция на пуск "Орешника"
  • pretty
  • Сегодня 07:00
  • В топе

Австрийский журналист Крис Вебер: Россия запускает неядерную межконтинентальную баллистическую ракету в качестве предупреждения о недопустимости дальнейшей эскалации.Фракция поджигателей войны го...

Двести Хиросим

Новая вундерваффе прилетела в завод Южмаш. Это шесть раздельных блоков по шесть боеголовок в каждом - хотя, поговаривают, их может быть и 8х8, что зависит от конфигурации и задач. Пока ...

Обсудить
  • дааааа было время в 1992-93 в институте начинал учить............. нэ пригодилось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!