Понедельник, 25 Мая 2020, 23:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Программирование » C/C++ » Tutorial [EN/RU] : Инициализация OpenGL (Visual C++ & OpenGL)
Tutorial [EN/RU] : Инициализация OpenGL
TimKruzДата: Вторник, 24 Июля 2012, 01:17 | Сообщение # 21
старожил
Сейчас нет на сайте
Quote (Тритон)
PFD_DOUBLEBUFFER;

Этот флаг включает режим двойной буферизации. То есть прорисовка идёт в "заднем" буфере, и чтобы показать картинку, нужно поменять местами передний и задний буферы (указатель на буфер, который нужно прорисовывать).
Quote (Тритон)
void OpenGLRender()
{
static double d=0.0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt (0.0, 0.0, 1.8, 0.0, 1.0, 0.0 , 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
GL_TRIANGLES;
glColor3ub(255,255,0);
glVertex3d(0.0, 2.0, 0.0);
glVertex3d(1.0, 2.0, 0.0);
glVertex3d(0.0, 2.0, 1.0);
glDisable(GL_DEPTH_TEST);
}

У тебя в этой процедуре происходит прорисовка, но только в заднем буфере. Чтобы увидеть рисунок, нужно поменять буферы. Применяется WinAPI-функция SwapBuffers(контекст устройства воспроизведения), после завершения прорисовки в заднем буфере.
Quote (Apati)
device context в вин апи используется для работы с графикой через GDI (любая функция рисования там требует первым параметром контекст устройства). Т.е. это что-то вроде холста, на котором происходит рисование. Каждое окно может иметь свой контекст. Получить его можно в любой момент после создания и до удаления окна.

Контекст устройства - это указатель, а не сам холст. Контекст устройства имеют не только все окна, но и большинство компонентов окон, так что можно выводить картинку на, например, кнопку на окне.
Quote (Apati)
В данном случае контекст устройства используется для инициализации OpenGL.

Точнее, мы указываем OpenGL, куда нужно выводить изображение.
Quote (Xe|N|o)
А как подключить двойную буферизацию?

Режим двойной буферизации указывается при задании формата пикселя, это же в первом сообщении темы уже есть:
Quote (WXZRW)
desc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; // Properties of pixel format


SaiteiДата: Понедельник, 20 Апреля 2015, 21:05 | Сообщение # 22
старожил
Сейчас нет на сайте
Тему открепляю в связи с устаревшей версией OpenGL.
Функции glBegin/End/etc. считаются устаревшими. Нынче в основном графику выводят с помощью шейдеров.
Рекомендую начать изучение программирования графики с версии OpenGL 3.3 и выше! Так же не забывайте о том, что скоро должен выйти Vulcan API! smile
Форум игроделов » Программирование » C/C++ » Tutorial [EN/RU] : Инициализация OpenGL (Visual C++ & OpenGL)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг