Как мога да получа някои OpenGL прозорци в една форма
OpenGL в Делфи: Вместо Въведение
Технология отворена графична библиотека (Отворете графичен библиотека - OpenGL) е де факто стандарт за професионална система за проектиране, компютърни игри и други приложения с помощта на дву- и триизмерни графики. Благодарение на библиотеката на различни платформи се използва широко в различни системи за развитие на различни операционни системи - от сървъра към мобилен телефон. Естествено, че не е изключение и като популярна система на Delphi, което дава възможност да се работи с OpenGL OpenGL.pas след една проста връзка модул.
Наистина, OpenGL за използване в Делфи не е трудна задача, която е добре описана в популярна книга [1]. В същото време, трябва да се отбележи, че несъответствието между подхода на ниско ниво, за да работи с графика в OpenGL компонент на подход на високо ниво за разработване на приложения прави трудно да използват повторно, след като писмено код в различни проекти. В допълнение, е необходимо да се поддържа връзка за всеки прозорец на възпроизвеждане е създал погрешно схващане за безполезност, невъзможност или затруднение за изготвянето на една форма на множество прозорци с OpenGL графики.
В статията се описва компонент за Делфи, изпълнява и двете OpenGL графики изходни средства, както и конвенционални средства за визуална библиотека компонент (компонент Visual библиотеки - VCL) с помощта на TCanvas клас. под формата на проект може да съдържа произволен брой копия на този компонент, осигурявайки по този начин правят няколко прозореца.
създаване на компонент
В [1] и в много други източници в Интернет с примери за работа OpenGL + Delphi, има примери на графика изход на повърхността на компонента. Въпреки това, този подход се илюстрира от кода вътре в матрицата, изпълнявайки двете необходимите подготвителни операции, както и всъщност извеждане на графики за компонент повърхност. Разбира се, този подход не прави код ПОВТОРНО в други проекти без съществени изменения.
Помислете за възможни начини за решаване на проблема за създаване на компонент, който не се нуждае от код под формата на проект или за работа с OpenGL графики.
Избирането прародител
Що се отнася до OpenGL нужда контекст устройство, то е логично, тъй като майка за нашия компонент, за да изберете един прост прозорец клас TWinControl.
В случай на необходимост от прилагане на универсален изход като средство за OpenGL и VCL като родител можете да вземете TCustomControl, вече като собственост на Canvas и виртуалната функция равенство боя.
Опитният може да се отбележи, че в класа на прост графичен TGraphicControl компонент, който има Canvas собственост може да се осигури връзка с контекста на устройството в Canvas.Handle собственост. Въпреки това, на първо място, този метод е без документи, както и в съответствие с прозорец OpenGL документация не трябва да съдържа CS_PARENTDC стил, а този стил в TGraphicControl, разбира се, са включени. На второ място, подготовката на контекста на възпроизвеждане подходящ да предоставя в момента на създаването на прозореца. На трето място, прилагането вероятно трябва да работят по всеки екран с клавиатурата, но това е възможно само в един компонент прозорец.
Мисля, че тези аргументи са достатъчни, за да спре избора на клас прозорец.
Така, решението на родоначалник се приема, за да се създаде компонент.
Използването на околната среда магистър Компонент / New VCL Компонент или просто чрез създаване на нов модул, обяви нов клас: