| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Проблема с перерисовкой графики OpenGL |
| Автор: marcusmae 26.3.2006, 19:10 | ||||
| Здравствуйте. Допустим, у нас есть диалог, написанный средствами чистого Win API, а в нём находится контрол IDC_EDIT, в область которого направлен вывод последовательности функций OpenGL. Экран при запуске такой : ![]() Графика нормально выводится, перерисовывается при возвращении из трея, но при перетаскивании окна за границы области экрана и обратно наблюдается вот какой эффект : ![]() То есть при перетаскивании на области контрола остаются куски изображения по траектории перетаскивания и в дальнейшем не пропадают. Причём происходит это только если выводить окно за границу экрана и перетащить его оттуда с достаточно большой скоростью. Почему это происходит? = Кто-нибудь, объясните, пожалуйста! Вот некоторые коды : Перерисовку делаю по WM_PAINT:
Само рисование - через контекст устройства :
|
| Автор: PRIZRAK001 26.3.2006, 22:48 | ||
| Во-первых Это обязательно каждый раз инициализировать, а затем деинициал-ть OpenGL при прорисовке контрола? Может стоить сделать это один раз: после создания окна и перед его уничтожением? Во-вторых Я не вижу функции очистки экрана glClear(...). Если ты не используешь какие-то свои методы очистки, то эту функцию надо писать перед прорисовкой. Во-третьих Деинициализация OpenGL осуществляется следующим образом
|
| Автор: marcusmae 27.3.2006, 09:46 |
| Действительно, оператор glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); в нужном месте полностью решил проблему. Спасибо большое Под инициализацией & деинициализацией понимаются операции над контекстами в DWORD WINAPI RefreshGL(HWND hDlg)? = Я правильно понял, что Вы предлагаете один раз создавать контексты при создании окна и один раз удалять при уничтожении окна? |