Суть такова, хочется написать окошко с интерфейсом Win32 и чтобы в нем была область на которой бы рендерился OpenGL. Так вот эта самая область для вывода графики должна занимать лишь часть окошка, а не всю рабочюю область. Как такое можно реализовать и много ли вариантов для реализации?
Можно конечно, просто хочется чтобы был некий обьект контекст которого можно было бы получать отдельно, а не так что получать контекст всего окна, а использовать только его часть.
Писал как-то прототип стратегии на Delphi+OpenGL. GL рендерил на компонент Panel, а под ним были обычные GDI кнопки Button для управления и плюс стандартное меню в окошке. Всё это жутко лагало, так что идти по моим стопам не советую.
{======================================================================= Начало работы приложения} procedure TfrmGL.FormCreate(Sender: TObject); begin dc := GetDC (Panel1.Handle); SetDCPixelFormat(dc); hrc := wglCreateContext(dc); end;
{======================================================================= Конец работы приложения} procedure TfrmGL.FormDestroy(Sender: TObject); begin wglDeleteContext(hrc); end;
end.
Сообщение отредактировал Kefir87 - Понедельник, 04 Апреля 2011, 11:28
Я в Делфи не очень, но прочитав код мне показалось что там вроде бы классы используются, а это уже не чистый Win32, а мне бы без надстроек всяких.
Все просто, вот код отрисовки
Code
procedure TfrmGL.FormPaint(Sender: TObject); var ps : TPaintStruct; begin BeginPaint (Panel1.Handle, ps); // для более устойчивой работы wglMakeCurrent(dc, hrc); glClearColor (0.5, 0.5, 0.75, 1.0); glClear (GL_COLOR_BUFFER_BIT);