Можно ли использовать OpenGL в окне, которое уже использует GDI+?

По сути, меня вызывают для рендеринга на закадровый DC, который настроен (я не знаю, как) на использование GDI+. Когда я пытаюсь связать контекст OpenGL с контроллером домена, он просто терпит неудачу (то есть возвращает ноль, но не ошибку). SetPixelFormat также не работает (вероятно, потому что он уже настроен?), опять же, возвращая ноль, а не ошибку.

Кто-нибудь знает, возможно ли, учитывая такую ​​ситуацию (т.е. внеэкранный контекст для окна, в котором кто-то другой использует GDI+), создать контекст OpenGL и использовать OpenGL для моего собственного рендеринга? (И если это возможно, почему wglCreateContext может дать сбой?)


person Community    schedule 18.05.2009    source источник


Ответы (1)


В этой статье показаны все шаги по подключению окна GDI: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01

По сути, вы должны:

  1. Создать окно
  2. Зарегистрируйте окно
  3. Получить контекст устройства области рисования окна
  4. Установите формат пикселей для контекста устройства
  5. Вызов wglCreateContext
  6. Вызов wglMakeCurrent
  7. Показать окно

Если у вас уже есть доступ к контексту устройства, пропустите первые два шага.

В вашем случае вы можете убедиться, что wglMakeCurrent — это все, что вам нужно. В противном случае вы можете опубликовать более подробную информацию об ошибках и поведении, с которыми вы столкнулись.

person Jordan Parmer    schedule 18.05.2009
comment
Проблема в том, что у меня уже есть DC (это внеэкранный контекст устройства), ссылающийся на окно, в котором мне нужно рисовать, но мой wglCreateContext дает сбой без каких-либо сообщений об ошибках, как и мой SetPixelFormat. Я могу без проблем создавать новые окна OpenGL, но он пытается использовать DC, предоставленный мне приложением, что и является проблемой... - person ; 19.05.2009
comment
Откуда вы знаете, что он терпит неудачу? Какую ошибку или код вы получаете в ответ? Какое-то странное поведение или он просто не рисует? - person Jordan Parmer; 19.05.2009
comment
Нет кода ошибки ни из OpenGL, ни из системы Windows. Я знаю, что это не работает, потому что возвращает 0 вместо действительного HGLRC. - person ; 19.05.2009