none
Ошибки рисование средствами GDI поверх OpenGL На Windows 7 и Windows Vista RRS feed

  • Общие обсуждения

  • 10 лет моя программа работала и я горя не знал.
    После установки Windows 7 с включенным Aero появились ошибки.
    Что интересно, когда я установил винду не было этих ошибок, а после установки драйвера для видеокарты (NVidia)  все вылезло.
    Моя программа рисует прямоугольник выбора объектов средствами GDI поверх картинки OpenGL.

    При запуске программы в режиме совместимости WINXPSP3 с и отключенным  интерфейсом Aero проблем нет.
    Мне уже предлагали отказаться от совмещения рисования в  одном окне средствами GDI и OpenGL.
    Но, у меня ведь все работало хорошо после установки Windows 7.
    Может быть нужно использовать GDI+?
    • Изменен тип I.Vorontsov 10 июня 2010 г. 5:34
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 21:32 MSDN Forums consolidation (От:Разработка Windows-приложений)
    3 февраля 2010 г. 19:38

Все ответы

  • Я думаю что достаточно использование одного OpenGL
    4 февраля 2010 г. 9:30
  • Проблема только с NVIDIA и только с определенными картами? Драйвера последние?
    В общем похожая проблема с отрисовкой была в WPF https://connect.microsoft.com/VisualStudio/feedback/details/478676/net-3-5-sp1-wpf-application-renders-incorrectly-on-nvidia-drivers-185-85-and-greater-186-18-and-190-38

    4 февраля 2010 г. 15:33
  • использование одного OpenGL потребует радикально переписать большой объем кода.
    В разных местах проекта.
    А я думаю, что может быть можно найти другое решение. А вдруг?
    4 февраля 2010 г. 16:13
  • Спасибо за ссылку

    The list of videocards from users who encountered graphics issues under Vista or Windows 7 follows below:
    ATI Radeon 1650 
    ATI Radeon Express 200 
    ATI Radeon 1650 
    NVIDIA 8400M
    NVIDIA geforce 8500 GT
    NVIDIA geforce 8600 GT 
    ATI fireGL 7200 
    NVIDIA GForce 7950 GT 
    NVIDIA 9800 GT 
    ATI Radeon 3100
    4 февраля 2010 г. 17:35
  •  То есть получается проблема со стороны драйверов вашей карты?
    5 февраля 2010 г. 6:26
  • Думаю лучший вариант это написать на  https://connect.microsoft.com/ . Проблема у вас, думаю, уж очень специфичная.


    [Мой блог], [LinkedIn]
    5 февраля 2010 г. 6:28
  • Думаю лучший вариант это написать на  https://connect.microsoft.com/ . Проблема у вас, думаю, уж очень специфичная.


    [Мой блог], [LinkedIn]
    Я не думаю, что моя проблема специфичная.
    Приведенная выше проблема не единственная у меня.

    Код ниже тоже работал прекрасно до появления Windows Aero
    Копируется содержимое картинки нарисованной средствами OppenGl в буфер

    В буфер помещается белый фон и следы рисования средствами GDI поверх OppenGl 
    void CView3d::OnCopyViewClipboard() 
    {
    	CRect R;
    	GetWindowRect(&R);
    	if (!OpenClipboard())
    	{                                     
    		Message_err("Cannot open clipboard.");
        	return;
    	}
    	CWindowDC dc(this);
    	CBitmap* pbmOld = NULL;
    	CDC dcMem;
    	VERIFY(dcMem.CreateCompatibleDC(&dc));
    
    	CBitmap bm;
    	VERIFY(bm.CreateCompatibleBitmap(&dc,R.Width(),R.Height()));
    	ASSERT(bm.m_hObject != NULL);
    	pbmOld = dcMem.SelectObject(&bm);
    	
    	dcMem.PatBlt(0,0,R.Width(),R.Height(),WHITENESS);
    	VERIFY(dcMem.BitBlt(0, 0, R.Width(), R.Height(), &dc, 0, 0, SRCCOPY));	
    	HGDIOBJ hBM=bm.Detach();
       	VERIFY(::EmptyClipboard());
       	VERIFY(::SetClipboardData(CF_BITMAP, hBM));
       	VERIFY(::CloseClipboard());
    
    	dcMem.SelectObject(pbmOld);
    	dcMem.DeleteDC();
    }

    5 февраля 2010 г. 16:10
  • Уважаемый пользователь!

     

    В вашей теме отсутствует активность в течение последних месяцев. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме.


    Для связи [Mail]