Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OpenGL и рисование на экране

414
17 августа 2012 года
CassandraDied
763 / / 24.05.2012
Доброго.
Подумал тут, куря маны по GLUT, если GL всегда создаёт окна, а мне вот хочется, чтобы на рабочем столе снежинки падали, например или шарик летал, при этом сам рабочий стол не закрывался бы, то сделать так не получится? GL же окно создаёт, которое рабочий стол будет закрывать.
Можно ли как-то сделать, чтобы окно не создавалось или тут придётся уже нативными апи рисовать без создания окна?
465
17 августа 2012 года
QWERYTY
595 / / 25.03.2012
А проблема то в чём? Получаете контекст рабочего стола и на нём прямо рисуете.
465
17 августа 2012 года
QWERYTY
595 / / 25.03.2012
Я получал контекст окон функцией GetDC в которую передаётся хендл, но не для рисования, а для извлечения цвета по определённым координатам. А для рабочего стола может вообще есть отдельная функция в которую ничего не нужно передавать.
85K
17 августа 2012 года
Wrapper
2 / / 17.08.2012
Здравствуйте.

GL не занимается управлением окнами (равно как их созданием, изменением или удалением), а также не устанавливает режим дисплея.

GLUT - это кроссплатформенная библиотека, которая использует функции оконной системы Windows API, системы сообщений и устройств ввода а также функции с приставкой wgl*. На *nix-платформах, вместо этого GLUT использует интерфейс GLX. Следовательно, совершенно необязательно использовать GLUT, чтобы использовать OpenGL.

Для инициализации OpenGL в Windows нужно:

1. Получить графический контекст нужного окна, вызовом GetDC.
2. Установить формат пикселя. Пары вызовов ChoosePixelFormat/SetPixelFormat хватит в большинстве случаев.
3. Создать OpenGL-контекст и сделать его активным. Вызовы wglCreateContext и wglMakeCurrent соответственно.

После того, как контекст выбран, все функции GL будут его использовать. Для отрисовки вы можете в своем приложении взводить таймер, срабатывающий FPS раз в секунду, т.е. таймаут таймера должен быть равен 1000 / FPS. FPS задавайте сами. Для нединамичной сцены (в вашем случае), вполне хватит 30. Отрисовка при перехвате сообщения WM_PAINT слишком медленна, а организовывать бесконечный цикл - пустая трата %CPU.
414
17 августа 2012 года
CassandraDied
763 / / 24.05.2012
Wrapper, не тяжело было простыню такую писать?
Понял, спасибо.
9.3K
01 сентября 2012 года
iridum
175 / / 26.08.2007
Цитата:
GL не занимается управлением окнами (равно как их созданием, изменением или удалением), а также не устанавливает режим дисплея.



Созданием, изменением или удалением он точно не занимается, но OS X и Compiz в линуксе насколько я знаю в OpenGL и отображают окна. GDI мог (незнаю может ли сейчас) рисовать по рабочему столу если контекст от 0-го окна получать. Скорее всего в системах где OpenGL не используется для вывода окон это сделать нельзя (я имею ввиду ту самую систему).

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог