Доброго времени суток, уважаемые подписчики.
Некоторые итоги месяца.
Это был первый месяц как нашей рассылки, так и нашего сайта.
Результаты, на мой взгляд, неплохие.
Колличество подписчиков выросло и нам приятно, что темы вас заинтересовали.
Хочется попросить прощения у тех, кому мы не ответили на письма. По техническим причинм часть корреспонденции была утеряна, просьба ко всем, пришлите свои вопросы, оставшиеся без ответа, и мы обязательно попробуем вам помочь.
На сайте начата первая серия статей не входящих в рассылку, она рассказывает для начинающих, принципы программирования под Windows. Милости просим.
Хочется сказать, спасибо, всем вам за ваше внимание. Мы всегда рады видеть вас на наших форумах и нашем сайте.
Громозека.
Выпуск 6.
Первые шаги в OpenGl. (часть 2)
Как я и обещал, мы продолжаем наш нелегкий путь изучения OpenGl.
В данном уроке научимся создавать OpenGl приложения, работающие под Windows. Возможно в будущем я посвящу пару уроков работе OpenGl под Linux.
Так как OpenGl независима от платформы (что мне очень нравится в отличие от Direct3D), то инициализацию обеспечивает сама OS.
Для этого нам необходимо заполнить несколько структур и вызвать пару функций WINAPI.
Заполняем описатель пиксельного формата устройства контекста: PIXELFORMATDESCRIPTOR.
Здесь мы указываем сколько бит необходимо выделить под каждое значение цвета, буфер глубины и т.д.
Создадим объект типа PIXELFORMATDESCRIPTOR полностью нулевого значения.
PIXELFORMATDESCRIPTOR pfd = {0};
Всегда необходимо заполнять поле nSize в размер структуры PIXELFORMATDESCRIPTOR;
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
Необходимо выставить требуемые флаги в dwFlags.
Поскольку мы будем выводить графические объекты в окно, выставляем флаг PFD_DRAW_TO_WINDOW, указываем ,что буфер кадра поддерживает вывод через OpenGl - PFD_SUPPORT_OPENGL, так как мы используем два буфера (back and front), то устанавливаем флаг PFD_DOUBLEBUFFER.
В поле iPixelType выставим PFD_TYPE_RGBA - это означает, что цвет для пикселя представляется в виде RGBA (цветовые компоненты: R-красный, G- зеленый, B- голубой, A - альфа). Устанавливаем глубину цвета cColorBits в 32bpp.
Заполнив все поля, выполняем запрос на выбор подходящего формата. Делаем это с помощью функции ChoosePixelFormat. Если функция не возвратила ноль, можно установить данный формат функцией SetPixelFormat.
Итак мы можем уже создать нашу функцию:
bool SetPixelFormat(HDC hDC)
{
int pixelformat;
PIXELFORMATDESCRIPTOR pfd = {0};