• Почему сплайны OpenGL прорисовываются не на всех компьютерах?

    @Altmensch Автор вопроса
    Евгений Шатунов, пожалуйста:
    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;
    }
  • Почему сплайны OpenGL прорисовываются не на всех компьютерах?

    @Altmensch Автор вопроса
    Евгений Шатунов, Вот так:
    61c5a081608bc523244527.jpeg

    Точки, естественно, есть, а вот сплайн отсутствует. Перехожу на другие компьютеры и, вот тут, как повезет сплайн может отобразиться, а может и отсутствовать.