Урок 1 - Инициализация OpenGL

  Этот курс уроков OpenGL предназначен для программистов, обладающих навыками разработки программ на Delphi.
Давайте разберемся, что такое OpenGL. Википедия гласит: OpenGL (Open Graphics Library — открытая графическая библиотека, графическое API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

  В этом уроке мы поймем, как инициализировать OpenGL в Delphi.
Итак, давайте начнем!

  Создадим новый проект (File->New->Application).
Теперь необходимо добавить в секцию uses Модуль OpenGL.
Далее нам надо задать формат пиксела, который будет использоваться в нашем приложении.
Для этого надо:

  • Создать глобальную переменную HRC с типом HGLRC;
var
 Form1: TForm1;
 HRC: HGLRC;
  • Создать процедуру SetDCPixelFormat.
procedure SetDCPixelFormat ( hdc : HDC );
var
 pfd : TPixelFormatDescriptor;
 nPixelFormat : Integer;
begin
 FillChar (pfd, SizeOf (pfd), 0);
 nPixelFormat := ChoosePixelFormat (hdc, @pfd);
 SetPixelFormat (hdc, nPixelFormat, @pfd);
end;
Всё! С форматом пиксела мы закончили.
Далее в обработчике событий Form1 onCreate будет наша инициализация OpenGL.
procedure TForm1.FormCreate(Sender: TObject);
begin
 SetDCPixelFormat(Canvas.Handle); //Применяем формат пиксела заданный ранее
 hrc := wglCreateContext(Canvas.Handle); //Выделяем контекст устройства
 wglMakeCurrent(Canvas.Handle, hrc);
end;
  В этой процедуре системе сообщается, что будет использоваться режим с поддержкой OpenGL. Аргументом функции wglCreateContext является ссылка на контекст устройства, на который будет осуществляться вывод. Сейчас устройством вывода служит окно формы. Для получения этого контекста OpenGL необходима величина типа HDC Здесь, как и во многих других примерах, мы используем факт, что canvas. Handle и есть ссылка на контекст устройства, связанная с окном формы. Сейчас если мы скомпилируем наш проект, то мы ничего не увидим (просто пустая форма).

Form1


  Ничего не происходит, потому что мы еще не рисовали наш буфер. Для этого в обработчике события Form1 onPaint запишем следующий код:
procedure TForm1.FormPaint(Sender: TObject);
begin
 glClearColor (0.5, 0.5, 0.75, 1.0); //Цвет фона
 glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Очистка буфера цвета и глубины

 wglMakeCurrent (0, 0);
end;
  Здесь стоит отметить, что первые 3 параметра функции glClearColor (R,G,B,A) задают оттенки красного, зелёного и синего результирующего цвета (в данном случае фиолетовый), а 4 параметр является альфа каналом (прозрачностью фона). Все эти параметры могут принимать значения от 0 до 1.

Теперь давайте скомпилируем наш проект:

Form1


Ура! У меня появилась форма, окрашенная в фиолетовый цвет. Если вы всё сделали правильно, то у вас должно получиться то же самое. Теперь можно поэкспериментировать с цветом формы.

В следующем уроке мы попытаемся нарисовать простые геометрические фигуры: точку, линию, треугольник, квадрат, куб и т.д.



Добавил(а): an1rk4 Дата: 2012-11-16
DC: HDC; в варах в уроке забыл прописать, ошибку выдавал на строке glClearColor (0.5, 0.5, 0.75, 1.0); //Цвет фона добавь поправку в урок)) еще бы неплохо объяснить что это за глобальные переменные DC: HDC и HRC: HGLRC; , с остальным вроде все понятно



Добавил(а): Feraset Дата: 2012-11-18
WTF? Серый цвет на фоте как был так и остался. У меня Delphi 7



Добавил(а): Feraset Дата: 2012-11-18
Паррдон цвет меняется но ток какойто непонятный RGB - Цвет меняет только <B> a RG как будто не причём



Добавил(а): Klesh Дата: 2012-11-18
an1rk4, переменная DC не используется в данном уроке, я просто забыл убрать её из исходника. Какую ошибку тебе выдаёт делфи?



Добавил(а): Doggy Дата: 2013-01-11
прикольно!! а рисовать будем только на форме? можно же все это замутить и для панелей или Image или PaintBox? Это будет в др. уроках? Ща буду смотреть Спасибо



Добавил(а): Klesh Дата: 2013-01-12
Да, рисовать можно на всем у чего есть свойство Handle.



Добавил(а): nucell Дата: 2013-01-18
Тупо белая форма... если что-то менять в glclearcolor толку ноль. Delphi 7



Добавил(а): Епифан Дата: 2013-04-30
А как сделать вывод OpenGL на TPanel? или другие элементы формы?



Добавил(а): Klesh Дата: 2013-05-01
/opengl/oles2.php последний коментарий



Добавил(а): gasmator Дата: 2013-05-11
меняю прозрачность фона - ничего не происходит



Добавил(а): Klesh Дата: 2013-05-11
Это нормально, ничего не должно меняться, просто в OpenGL пиксель состоит из 4 компонентов. Нужно же чем то забить последний



Добавил(а): Maks Дата: 2013-08-01
Конеш никаких комментариев практически нет...ничего не описано, мало пояснений. просто пишет автор ВСЕ и типо это нормально...и это уроки?



Добавил(а): Daniel Дата: 2013-08-13
Всё очень печально... Даже скачанный пример не работает.В чём может быть причина?



Добавил(а): Stormteller Дата: 2013-11-01
Что нужно изменить что бы рисовать на панели?



Добавил(а): kordalk Дата: 2014-01-06
"Да, рисовать можно на всем у чего есть свойство Handle." Не на чем угодно. Рисовать можно на всех тех компонентах, которые унаследованы от TWinControl. К таким относятся: TForm, TPanel, TButton, TGroupBox и др. Если быть точнее, у тех компонентов свойство Handle которых, должно иметь тип HWND.



Добавил(а): dimonsky Дата: 2017-07-03
ЗАпускается, но фоорма меняет цвет не каждый раз, а один из трех-четырех запусков.



Добавил(а): dimonsky Дата: 2017-07-03
canvas.handle не работает. Вместо этого надо GetDC(panel1.handle).



Добавил(а): N0E0O7 Дата: 2017-08-16
А у меня форма чёрная запускается



Добавил(а): SteelFlame Дата: 2018-07-27
Что такое 1.формат пиксела 2. тип - HGLRC


  1. Allended
    Allended 7 months ago
    Welcome to the world of adult Dating loveawake.ru
  2. alkanna
    alkanna 6 months ago
    100 Mg Viagra Price Walmart Inimeneidigh [url=https://xbuycheapcialiss.com/]cialis online ordering[/url] diunny Cvs Online Pharmacy Tadacip
  3. GqtHP
    GqtHP 5 months ago
    Pills prescribing information. Brand names. <a href="https://prednisone4u.top">where can i get prednisone online</a> in the USA. Actual news about medicines. Get now.
    [url=http://lenabondareva.com/2018/12/04/philadelphia-flutist-announces-recital-and-music-lessons-for-children-and-adults/#comment-947]Best news about medicines.[/url] [url=https://quizzma.com/permit-test-answers/#comment-21286]All information about drug.[/url] [url=https://mr-kids.com/archives/3040#comment-4742]All trends of drug.[/url] 10bd897
  4. vjcfqdlvcf
    vjcfqdlvcf 4 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g5rgx14ph4ipp581o89a535wg58npg86s.org/]uvjcfqdlvcf[/url]
    vjcfqdlvcf http://www.g5rgx14ph4ipp581o89a535wg58npg86s.org/
    <a href="http://www.g5rgx14ph4ipp581o89a535wg58npg86s.org/">avjcfqdlvcf</a>
  5. SandraPlecy
    SandraPlecy 3 months ago
    Russian actor Panin is seen on an erotic resource loveawake.ru
  6. bmhnpqkbg
    bmhnpqkbg 3 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g1h53su3u28055ushk6kl8yb7b075qb2s.org/]ubmhnpqkbg[/url]
    <a href="http://www.g1h53su3u28055ushk6kl8yb7b075qb2s.org/">abmhnpqkbg</a>
    bmhnpqkbg http://www.g1h53su3u28055ushk6kl8yb7b075qb2s.org/
  7. ksfdlkisv
    ksfdlkisv 3 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g4z3y7c0kw29p3dzb61fyngov7729185s.org/]uksfdlkisv[/url]
    ksfdlkisv http://www.g4z3y7c0kw29p3dzb61fyngov7729185s.org/
    <a href="http://www.g4z3y7c0kw29p3dzb61fyngov7729185s.org/">aksfdlkisv</a>
  8. dycrogwxv
    dycrogwxv 3 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    dycrogwxv http://www.gue3on804c25t47n8b55tn3xrhg91h55s.org/
    <a href="http://www.gue3on804c25t47n8b55tn3xrhg91h55s.org/">adycrogwxv</a>
    [url=http://www.gue3on804c25t47n8b55tn3xrhg91h55s.org/]udycrogwxv[/url]
  9. lxcinivvbv
    lxcinivvbv 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    lxcinivvbv http://www.gfk56r3j4z83228bj2w61t9j4c9cea9ns.org/
    [url=http://www.gfk56r3j4z83228bj2w61t9j4c9cea9ns.org/]ulxcinivvbv[/url]
    <a href="http://www.gfk56r3j4z83228bj2w61t9j4c9cea9ns.org/">alxcinivvbv</a>
  10. lziprzctxh
    lziprzctxh 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.gh030ryl02hqn5p2f36eo39q72yc347ss.org/]ulziprzctxh[/url]
    lziprzctxh http://www.gh030ryl02hqn5p2f36eo39q72yc347ss.org/
    <a href="http://www.gh030ryl02hqn5p2f36eo39q72yc347ss.org/">alziprzctxh</a>
  11. ttzpghjbp
    ttzpghjbp 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g22xmq9r6fnu4lt1kv8022121ubk9x73s.org/]uttzpghjbp[/url]
    <a href="http://www.g22xmq9r6fnu4lt1kv8022121ubk9x73s.org/">attzpghjbp</a>
    ttzpghjbp http://www.g22xmq9r6fnu4lt1kv8022121ubk9x73s.org/
  12. alkanna
    alkanna 2 months ago
    [url=https://gcialisk.com/]is generic cialis available[/url]
  13. kymwjoxmny
    kymwjoxmny 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.gq2k86rq2f6hop869134350vgamkz6y1s.org/">akymwjoxmny</a>
    kymwjoxmny http://www.gq2k86rq2f6hop869134350vgamkz6y1s.org/
    [url=http://www.gq2k86rq2f6hop869134350vgamkz6y1s.org/]ukymwjoxmny[/url]
  14. qmqtplifxe
    qmqtplifxe 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.g1e0hd1791wp2h021p69dj7k31got9tes.org/">aqmqtplifxe</a>
    qmqtplifxe http://www.g1e0hd1791wp2h021p69dj7k31got9tes.org/
    [url=http://www.g1e0hd1791wp2h021p69dj7k31got9tes.org/]uqmqtplifxe[/url]
  15. poqrcjqnec
    poqrcjqnec 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.gsj70n5686xlf459zfv5749gfn1sr02us.org/]upoqrcjqnec[/url]
    poqrcjqnec http://www.gsj70n5686xlf459zfv5749gfn1sr02us.org/
    <a href="http://www.gsj70n5686xlf459zfv5749gfn1sr02us.org/">apoqrcjqnec</a>
  16. vkhjovyfx
    vkhjovyfx 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.ghi847di3t4hwfe91v58s7x2642qdy65s.org/]uvkhjovyfx[/url]
    vkhjovyfx http://www.ghi847di3t4hwfe91v58s7x2642qdy65s.org/
    <a href="http://www.ghi847di3t4hwfe91v58s7x2642qdy65s.org/">avkhjovyfx</a>
  17. fdwwqckm
    fdwwqckm 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.ghh6b77v99d4k769808x4o0od1wk9jhcs.org/">afdwwqckm</a>
    fdwwqckm http://www.ghh6b77v99d4k769808x4o0od1wk9jhcs.org/
    [url=http://www.ghh6b77v99d4k769808x4o0od1wk9jhcs.org/]ufdwwqckm[/url]
  18. fzgjfodhc
    fzgjfodhc 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g85r9l977zq03b63l8m9y3oghi2j58pls.org/]ufzgjfodhc[/url]
    <a href="http://www.g85r9l977zq03b63l8m9y3oghi2j58pls.org/">afzgjfodhc</a>
    fzgjfodhc http://www.g85r9l977zq03b63l8m9y3oghi2j58pls.org/
  19. yxrwfxvjhs
    yxrwfxvjhs 2 months ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.gxewx3218k03684p02jy3eujp6a7d9p7s.org/]uyxrwfxvjhs[/url]
    <a href="http://www.gxewx3218k03684p02jy3eujp6a7d9p7s.org/">ayxrwfxvjhs</a>
    yxrwfxvjhs http://www.gxewx3218k03684p02jy3eujp6a7d9p7s.org/
  20. delmfsiror
    delmfsiror a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.gfkje8t47x797d42rb9341mi092mdxu5s.org/]udelmfsiror[/url]
    delmfsiror http://www.gfkje8t47x797d42rb9341mi092mdxu5s.org/
    <a href="http://www.gfkje8t47x797d42rb9341mi092mdxu5s.org/">adelmfsiror</a>
  21. gvjpzkorv
    gvjpzkorv a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.g3ca73t18pu0poa8ce6xk4m847ey1273s.org/">agvjpzkorv</a>
    [url=http://www.g3ca73t18pu0poa8ce6xk4m847ey1273s.org/]ugvjpzkorv[/url]
    gvjpzkorv http://www.g3ca73t18pu0poa8ce6xk4m847ey1273s.org/
  22. alkanna
    alkanna a month ago
    <a href="https://vskamagrav.com/">kamagra chewable 100 mg canada[/url]</a>
  23. wmrdbsep
    wmrdbsep a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.gx9t1v9i7dp35b312be5227qzyr8w27ks.org/">awmrdbsep</a>
    wmrdbsep http://www.gx9t1v9i7dp35b312be5227qzyr8w27ks.org/
    [url=http://www.gx9t1v9i7dp35b312be5227qzyr8w27ks.org/]uwmrdbsep[/url]
  24. jcrjzxxqod
    jcrjzxxqod a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    jcrjzxxqod http://www.g657329txr97xsd9fqem64gxou87532qs.org/
    [url=http://www.g657329txr97xsd9fqem64gxou87532qs.org/]ujcrjzxxqod[/url]
    <a href="http://www.g657329txr97xsd9fqem64gxou87532qs.org/">ajcrjzxxqod</a>
  25. hkrrfdkhob
    hkrrfdkhob a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g843l8icfw0l2h85515lhel3835v3lefs.org/]uhkrrfdkhob[/url]
    <a href="http://www.g843l8icfw0l2h85515lhel3835v3lefs.org/">ahkrrfdkhob</a>
    hkrrfdkhob http://www.g843l8icfw0l2h85515lhel3835v3lefs.org/
  26. dbmbeskmw
    dbmbeskmw a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g00itbg4413ptw85o3p0xn4q4ua4195rs.org/]udbmbeskmw[/url]
    dbmbeskmw http://www.g00itbg4413ptw85o3p0xn4q4ua4195rs.org/
    <a href="http://www.g00itbg4413ptw85o3p0xn4q4ua4195rs.org/">adbmbeskmw</a>
  27. floxtqhsmm
    floxtqhsmm a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    floxtqhsmm http://www.gc0xd6ee997drd147mf76yd61tl496t3s.org/
    [url=http://www.gc0xd6ee997drd147mf76yd61tl496t3s.org/]ufloxtqhsmm[/url]
    <a href="http://www.gc0xd6ee997drd147mf76yd61tl496t3s.org/">afloxtqhsmm</a>
  28. fnvnbcbw
    fnvnbcbw a month ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.gly817974p8huc0i3s76k59vho74u4cts.org/]ufnvnbcbw[/url]
    fnvnbcbw http://www.gly817974p8huc0i3s76k59vho74u4cts.org/
    <a href="http://www.gly817974p8huc0i3s76k59vho74u4cts.org/">afnvnbcbw</a>
  29. ijmkoyrrj
    ijmkoyrrj 30 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g122keq9q11639m6mu83ablrhy40er35s.org/]uijmkoyrrj[/url]
    ijmkoyrrj http://www.g122keq9q11639m6mu83ablrhy40er35s.org/
    <a href="http://www.g122keq9q11639m6mu83ablrhy40er35s.org/">aijmkoyrrj</a>
  30. lhmpydkcij
    lhmpydkcij 30 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    lhmpydkcij http://www.g5g4w64qyshwa08117xv62y790kw0tj3s.org/
    <a href="http://www.g5g4w64qyshwa08117xv62y790kw0tj3s.org/">alhmpydkcij</a>
    [url=http://www.g5g4w64qyshwa08117xv62y790kw0tj3s.org/]ulhmpydkcij[/url]
  31. kmqyesnfpe
    kmqyesnfpe 26 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    [url=http://www.g5figqv104wt01133b2ljm743ac9i4u3s.org/]ukmqyesnfpe[/url]
    <a href="http://www.g5figqv104wt01133b2ljm743ac9i4u3s.org/">akmqyesnfpe</a>
    kmqyesnfpe http://www.g5figqv104wt01133b2ljm743ac9i4u3s.org/
  32. ktpsmyszz
    ktpsmyszz 26 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    ktpsmyszz http://www.gk15116p7a5hu113y8p61xn313chawljs.org/
    [url=http://www.gk15116p7a5hu113y8p61xn313chawljs.org/]uktpsmyszz[/url]
    <a href="http://www.gk15116p7a5hu113y8p61xn313chawljs.org/">aktpsmyszz</a>
  33. lorblehtxd
    lorblehtxd 23 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.g56xg095stfqeb535z179w5kf8h1j20us.org/">alorblehtxd</a>
    [url=http://www.g56xg095stfqeb535z179w5kf8h1j20us.org/]ulorblehtxd[/url]
    lorblehtxd http://www.g56xg095stfqeb535z179w5kf8h1j20us.org/
  34. xkobdpvc
    xkobdpvc 18 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.gd25f79161b41je2aote0f9nuzp3p383s.org/">axkobdpvc</a>
    xkobdpvc http://www.gd25f79161b41je2aote0f9nuzp3p383s.org/
    [url=http://www.gd25f79161b41je2aote0f9nuzp3p383s.org/]uxkobdpvc[/url]
  35. ctrymyzdfy
    ctrymyzdfy 11 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    ctrymyzdfy http://www.gf5e50q50c45qp48m50xzd45vh90y3bws.org/
    [url=http://www.gf5e50q50c45qp48m50xzd45vh90y3bws.org/]uctrymyzdfy[/url]
    <a href="http://www.gf5e50q50c45qp48m50xzd45vh90y3bws.org/">actrymyzdfy</a>
  36. lfmxrkrjoc
    lfmxrkrjoc 10 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    <a href="http://www.g546r42209r2ujux1t6ok92nkow8i87js.org/">alfmxrkrjoc</a>
    lfmxrkrjoc http://www.g546r42209r2ujux1t6ok92nkow8i87js.org/
    [url=http://www.g546r42209r2ujux1t6ok92nkow8i87js.org/]ulfmxrkrjoc[/url]
  37. khxewxlq
    khxewxlq 8 days ago
    Урок 1 - Инициализация OpenGL - The Delphi
    khxewxlq http://www.gw00i954r042p1r42u2rs2hhnh133qcbs.org/
    [url=http://www.gw00i954r042p1r42u2rs2hhnh133qcbs.org/]ukhxewxlq[/url]
    <a href="http://www.gw00i954r042p1r42u2rs2hhnh133qcbs.org/">akhxewxlq</a>
Отменить.