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