C++11 new features

Недавно посмотрел курс Advanced C++ Programming на портале caveofprogramming.com. Как обычно, решил некоторые вещи законспектировать, чтобы не забыть. Определение пользовательского типа внутри функции Ключевое слово auto Range-based for loop Вложенные классы Что должен уметь класс контейнера, чтобы быть «итерабельным» Лямбда-выражения std::function — General-purpose polymorphic function wrapper Шаблоны с произвольным числом аргументов (Variadic Templates) Rvalue reference Perfect forwarding Способы передачи параметров в функции std::bind static_assert Что осталось за кадром Литература Дэвид Вандервурд, Николаи Джосаттис, Дуглас Грегор — Шаблоны C++. Справочник разработчика. Читать дальше …

Компьютерные сети

Недавно я в целях ликвидации безграмотности посмотрел видеокурс GeekBrains по компьютерным сетям (автор — Алексей Степченко). Курс великолепный, то как автор доносит информацию до слушателей — выше всяких похвал. Зиждется данный курс на практических примерах и заданиях, которые выполняются в программе Cisco Packet Tracer, которая эмулирует компьютерные сети, то бишь хосты, серверы, свичи, роутеры и пр. Причем эмулирует, я бы сказал, с высокой степенью реалистичности. В этой программе вы настраиваете сетевое оборудование и можете в реальном времени наблюдать функционирование сети. Читать дальше …

Опыт изучения OpenGL — Часть 6 — Улучшаем программу рисования треугольника

В прошлой заметке мы нарисовали треугольник с использованием практически голого OpenGL. Начнем теперь видоизменять программу. Цель — сделать ее более простой для понимания и менее подверженной ошибкам. Предпосылки для написания своего фреймворка У приведенной в прошлой заметке программы рисования треугольника есть следующие потенциальные возможности для улучшения: Очень много вызовов всяких функций, выполняющих очень мелкие операции в рамках некой сравнительно крупной задачи. Например, чтобы скомпоновать шейдерную программу, надо вызвать функции glCreateProgram, glAttachShader, glLinkProgram, glDetachShader. Ясно, что в подобных случаях все эти Читать дальше …

Опыт изучения OpenGL — Часть 5 — Рисуем треугольник

В предыдущих заметках мы провели всю необходимую подготовку для того, чтобы начать рисовать. Рисовать начнем с треугольника (так поступают авторы большинства книжек по OpenGL). На примере рисования треугольника мы обсудим ряд базовых концепций компьютерной графики. Пока речь не пойдет о трехмерном пространстве, наш треугольник не будет поворачиваться, и на него нельзя будет взглянуть под произвольным углом. Литература Настоятельно рекомендую вам главы из нижеследующих книг перед чтением этой заметки (или после чтения): Jason McKesson — Learning Modern 3D Graphics Programming. — Читать дальше …

Опыт изучения OpenGL — Часть 4 — Класс engine::ProgramBase

Я продолжаю рассказывать о написанном мною рисовательном API на базе OpenGL, размещенном в открытом репозитории на хостинге BitBucket. К сожалению, написание программы с помощью OpenGL требует существенной предварительной артподготовки в виде Загрузки функций OpenGL (инициализации библиотеки GLEW) Создания окна Создания контекста OpenGL В сегодняшней заметке я освещу класс engine::ProgramBase, который собирает все перечисленные этапы воедино, и в следующих заметках перейду непосредственно к рисованию. Задачи класса ProgramBase Все программы, которые что-то рисуют при помощи OpenGL, как оказалось, имеют ряд общих черт. Читать дальше …

Опыт изучения OpenGL — Часть 3 — Создание контекста рисования

В предыдущих двух заметках я рассказал о том, как загрузить функции OpenGL (проинициализировать библиотеку GLEW) и как создать окно, в котором мы будем рисовать. Но для рисования нам потребуется так называемый OpenGL context — «an object that holds all of OpenGL» — он уже упоминался в первой заметке. Повторим вкратце основные факты о контексте OpenGL: Контекст обладает состоянием. Его состояние определяет, что будет нарисовано на экране. Изменить (повлиять на) это состояние могут только функции API OpenGL. Т. е. контекст можно Читать дальше …

Опыт изучения OpenGL — Часть 2 — Окно

В прошлой заметке я начал рассказывать про свой опыт изучения OpenGL и остановился на том, что проинициализировал библиотеку GLEW, которая загружает все функции API OpenGL. Чтобы начать рисовать что-либо при помощи OpenGL, нам нужно то, на чем можно рисовать, а именно — окно. Ему и посвящена настоящая заметка. Работа окна имеет непосредственное отношение к используемой нами операционной системе, в моем случае — Windows. Поэтому в коде активно используется WinAPI. Исходный код проекта по изучению OpenGL находится в открытом репозитории. Литература Читать дальше …

Как сделать свой проект открытым (open source)

Недавно мне довелось делать закрытый проект открытым, т. е. перевести его в разряд проектов с открытым исходным кодом (open source). Не уверен, что все сделал абсолютно правильно. Тем не менее, опытом хочу поделиться. Добавление лицензии в проект Copyright notice Зависимости (dependencies): как быть с их лицензиями Делаем репозиторий открытым Добавление лицензии в проект Если проект не снабжен лицензией, он тем не менее защищен авторским правом. Причем это подразумевает, что никто, кроме автора, не может распространять проект в оригинальном или модифицированном Читать дальше …

Опыт изучения OpenGL — Часть 1 — Введение

С детства мечтал писать компьютерные игры, и вот, года три назад решил рискнуть — поизучать OpenGL. Почему взялся изучать не игровой движок, а низкоуровневый API (API — Application Programming Interface)? Потому что люблю изучать все с как можно более низкого уровня, чтобы разобраться как оно работает (например, изучение языка ассемблера Intel очень помогло моему пониманию языков Си и C++). А почему OpenGL, а не DirectX? — Просто по OpenGL я смог найти больше литературы, чем по DirectX. Изучать OpenGL — Читать дальше …

Вращательное движение

Что в курсе механики (простой, не аналитической) всегда вызывало у меня удивление, так это вращательное движение, моменты сил, импульса… В этой заметке рассмотрим основные интересные вещи, связанные с вращением. Момент силы и момент импульса Момент инерции Сохранение момента импульса при изменяющемся моменте инерции Энергия поступательного и вращательного движения Вращательный дисбаланс Колесо на палке, волчок, прецессия Литература Дуглас Джанколи — Физика в 2-х томах — Москва, Мир, 1989. Разделы 9,10 — Вращательное движение. Момент силы и момент импульса На рисунке 1 Читать дальше …