Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Удаленная работа для IT-специалистов
BOOL CBezier2DView::SetPixelFormat(HDC hdc) { // Заполняем поля структуры static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR),// Размер структуры 1, // Номер версии PFD_DRAW_TO_WINDOW | // Поддержка вывода в окно PFD_SUPPORT_OPENGL | // Поддержка OpenGL PFD_DOUBLEBUFFER, // Двойная буферизация PFD_TYPE_RGBA, // Цвета в режиме RGBA 24, // 24-разряда на цвет 0, 0, 0, 0, 0, 0, // Биты цвета игнорируются 0,// Не используется параметр alpha (не поддерживается) 0, // Смещение цветов игнорируются 0, // Буфер аккумулятора не используется 0, 0, 0, 0, // Биты аккумулятора игнорируются 32, // 32-разрядный буфер глубины 0, // Буфер трафарета не используется 0, // Вспомогательный буфер не используется PFD_MAIN_PLANE,// Основной слой 0, // Зарезервирован 0, 0, 0 // Маски слоя игнорируются }; int pixelFormat; // Поддерживает ли система необходимый формат пикселей? if((pixelFormat = ::ChoosePixelFormat(hdc, &pfd)) == 0){ MessageBox("С заданным форматом пикселей работать" " нельзя"); return FALSE; } if (::SetPixelFormat(hdc, pixelFormat, &pfd) == FALSE) { MessageBox("Ошибка при выполнении SetPixelFormat"); return FALSE; } return TRUE; } ////////////////////////////////////////////////////////////////// // BOOL CBezier2DView::CreateGLContext(HDC hdc) { // Создаем контекст воспроизведения if((m_hrc = ::wglCreateContext(hdc)) == NULL) return FALSE; // Делаем контекст воспроизведения текущим if(::wglMakeCurrent(hdc, m_hrc) == FALSE) return FALSE; return TRUE; } // CBezier2DView message handlers int CBezier2DView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // Формируем контекст рабочей области m_pDC = new CClientDC(this); ASSERT(m_pDC != NULL); // Получаем дескриптор контекста устройства HDC hdc = m_pDC->GetSafeHdc(); // Устанавливаем формат пикселей if (SetPixelFormat(hdc)==FALSE) return -1; // Создаем и делаем текущим контекст воспроизведения if (CreateGLContext(hdc)==FALSE) return -1; return 0; }