Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2009, 19:44   #1
gastello
Новичок
Джуниор
 
Регистрация: 16.02.2009
Сообщений: 2
По умолчанию OpenGL + GDI в Windows Vista

Появилась проблема при использовании GDI поверх OpenGL в Висте. Мной было замечено что если GDI графику рисовать до любых операций OpenGL то все что было нарисовано в GDI стираеться и прорисовываеться то что было нарисовано OpenGL. Как будто OpenGL рисуеться в отдельный буфер который при какждом вызове glFlush() выводиться на екран при этом стирая все что было до этого нарисовано в GDI. Одно из легких решений проблемы - рисовать GDI объекты после прорисовки всех елементов в OpenGL, но возникала та же проблема при делении екрана на четыре части. После прорисовки одного екрана, прорисовка OpenGL елементов следующего затирает GDI елементы предыдущего. Я попытался прорисовывать все на екран а потом скопировать содержимое екрана при помощи CDC::BitBlt и вывести этот буфер с использованием glDrawPixels но оказалось что GDI объекты прорисовываються после выхода из функции CView::OnDraw, тоисть захват екрана при помощи CDC::BitBlt в конце прорисовки функции OnDraw не включает в себя GDI объекты.
Как вариант рисовать GDI объекты в буфер а потор рисовать при помощи OpenGL не опробован, надеюсь на более легкий способ решение броблемы.
Помогите с решением данной проблемы.
gastello вне форума Ответить с цитированием
Старый 16.02.2009, 20:57   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

может быть всё рисовать посредством OpenGL и не извращаться?
pu4koff вне форума Ответить с цитированием
Старый 17.02.2009, 17:18   #3
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Эм... А Вы glViewport не пробовали использовать для того, чтоб ограничить область вывода? Или у Вас перекрываются 3д и GDI объекты?

Вообще я соглашусь с pu4koff - юзайте glut
theos вне форума Ответить с цитированием
Старый 18.02.2009, 16:26   #4
gastello
Новичок
Джуниор
 
Регистрация: 16.02.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
может быть всё рисовать посредством OpenGL и не извращаться?
к сожалению до меня уже написана большая часть кода посредством GDI поверх OpenGL. Переписывать займет очень много времени.

Цитата:
Сообщение от theos Посмотреть сообщение
Эм... А Вы glViewport не пробовали использовать для того, чтоб ограничить область вывода? Или у Вас перекрываются 3д и GDI объекты?

Вообще я соглашусь с pu4koff - юзайте glut
обьекты рисуються все вместе. ГДI всегда поверх ОпенЖЛ

Последний раз редактировалось MaTBeu; 18.02.2009 в 17:23.
gastello вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi под windows Vista Pitbull Софт 8 21.06.2008 16:20
Вопросы по Windows Vista Almaas Windows 3 05.05.2008 07:50
Помогите - Значки в Windows Vista Алексей_C Общие вопросы Delphi 5 19.11.2007 01:27
Windows Vista Yar Свободное общение 1 27.09.2007 21:48
Windows Vista ultimate oLMeR Свободное общение 16 31.07.2007 07:44