Урок 3 - Объёмные фигуры

  В этом уроке мы нарисуем объёмные фигуры: куб, пирамида, сфера, конус, тор (плюшка), и включим освещение примитивов.
Сначала необходимо скачать (ссылка в конце урока) и подключить библиотеку DGLUT.pas.
Напомню, для того, что бы подключить библиотеку нужно ввести ее имя в секцию uses

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL, DGLUT;
В библиотеке DGLUT.pas записаны уже готовые алгоритмы построения объёмных фигур.
Например:
Алгоритм рисования куба вручную:
glBegin(GL_QUADS);
    // Лицевая сторона
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f( 1.0, -1.0,  1.0);
    glVertex3f( 1.0,  1.0,  1.0);
    glVertex3f(-1.0,  1.0,  1.0);
    //Задняя сторона
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(-1.0,  1.0, -1.0);
    glVertex3f( 1.0,  1.0, -1.0);
    glVertex3f( 1.0, -1.0, -1.0);
    // Верхняя сторона
    glVertex3f(-1.0,  1.0, -1.0);
    glVertex3f(-1.0,  1.0,  1.0);
    glVertex3f( 1.0,  1.0,  1.0);
    glVertex3f( 1.0,  1.0, -1.0);
    // Нижняя сторона
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f( 1.0, -1.0, -1.0);
    glVertex3f( 1.0, -1.0,  1.0);
    glVertex3f(-1.0, -1.0,  1.0);
    // Правая сторона
    glVertex3f( 1.0, -1.0, -1.0);
    glVertex3f( 1.0,  1.0, -1.0);
    glVertex3f( 1.0,  1.0,  1.0);
    glVertex3f( 1.0, -1.0,  1.0);
    // Левая сторона
    glVertex3f(-1.0, -1.0, -1.0);
    glVertex3f(-1.0, -1.0,  1.0);
    glVertex3f(-1.0,  1.0,  1.0);
    glVertex3f(-1.0,  1.0, -1.0);
  glEnd(); 
При помощи библиотеки:
glutSolidCube(Размер);
  В OpenGL есть буфер глубины, второе его название ZBuffer. В нем хранятся данные о расстоянии от каждого пиксела монитора до точек в объёмном пространстве OpenGL, принадлежащих этому пикселу. OpenGL выводит точки, расстояние до которых меньше всех расстояний до точек принадлежащие этому пикселу.


Удалите все примитивы прошлого урока в процедуре FormPaint и дополните её кодом:
glutSolidCube(1);

После компиляции мы увидим куб белого цвета. Белый, потому что он не освещается.

Что бы включить источник света, нужно добавить
glEnable(GL_LIGHTING); //включаем освещение
glEnable(GL_LIGHT0); //включаем источник света №0
в функцию создания формы. Источников света не может быть больше 8.
Давайте скомпилируем и посмотрим, что получилось.


Куб стал смотреться более объёмно, благодаря освещению.

  Теперь нарисуем сферу, но перед этим сдвинем куб в сторону. Сделаем это функцией glTranslatef(x, y, z) где x, y, z –вектор смещения всей системы координат. Существуют функции запоминания текущей системы координат glPushMatrix и восстановления glPopMatrix. Если просто использовать glTranslatef , то мы просто сдвинем всю систему координат со всеми примитивами, которые мы нарисовали, а нам надо сдвинуть ТОЛЬКО куб.
Вот здесь и пригодятся эти функции.

Запомним систему координат -> сдвинем куб -> восстановим систему координат.

Таким образом, получится, что мировая система координат останется на месте, а система координат куба будет смещена.

Изменим код вывода куба:
 glpushMatrix; //Запомнили
 glTranslatef(-5,0,0); //Сместили
 glutSolidCube(1);      //Рисуем куб
 glPopmatrix;  //Восстановили

Вот сейчас, когда стало много места, можно нарисовать сферу функцией glutSolidSphere(радиус, кол-во сегментов по X, кол-во сегментов по Y) и сдвинем в противоположную сторону.
 glpushMatrix; //Запомнили
 glTranslatef(5,0,0); //Сместили
 glutSolidSphere(2,20,20);  //Рисуем сферу
 glPopmatrix; //Восстановили

Двигаемся дальше и рисуем тор функцией glutSolidTorus(радиус сечения, радиус окружности, кол-во сегментов по X,кол-во сегментов по Y) и сдвинем его от нас на 5 единиц пространства.
 glpushMatrix; //Запомнили
 glTranslatef(0,5,0); //Сместили
 glutSolidTorus(1, 2, 20, 20);//Рисуем тор
 glPopmatrix; //Восстановили

Нарисуем додекаэдр функцией glutSolidDodecahedron и сдвинем его в нашу сторону.
 glpushMatrix; //Запомнили
 glTranslatef(0,-5,0); //Сместили
 glutSolidDodecahedron (); //Рисуем додекаэдр
 glPopmatrix; //Восстановили

И наконец, нарисуем конус функцией glutSolidCone(радиус базы, высота, кол-во сегментов по X,кол-во сегментов по Y) и сдвинем его вверх на 2 единицы.
 glpushMatrix; //Запомнили
 glTranslatef(0,0,2); //Сместили
 glutSolidCone (2, 3, 10, 10); //Рисуем конус
 glPopmatrix; //Восстановили

Всё. Таким образом, процедура FormPaint должна содержать следующий код:
 glpushMatrix;
 glTranslatef(-5,0,0);
 glutSolidCube(1);      //Куб
 glPopmatrix;

 glpushMatrix;
 glTranslatef(5,0,0);
 glutSolidSphere(2,20,20);  //Сфера
 glPopmatrix;

 glpushMatrix;
 glTranslatef(0,5,0);
 glutSolidTorus(1,2,20,20);  //Тор
 glPopmatrix;

 glpushMatrix;
 glTranslatef(0,-5,0);
 glutSolidDodecahedron();   //Додекаэдр
 glPopmatrix;

 glpushMatrix;
 glTranslatef(0,0,2);
 glutSolidCone(2,3,10,10);   //Конус
 glPopmatrix;
  В следующем уроке мы познакомимся с нормалями.



Добавил(а): wagner Дата: 2012-07-23
можно было бы и написать, как подключается эта библиотека..., а без не смысла нет дальше продолжать



Добавил(а): Admin Дата: 2012-07-24
Все библиотеки подключаются записью в uses. Добавьте DGLUT в uses.



Добавил(а): wagner Дата: 2012-07-24
Нееееет))) то что подключать библиотеки в разделе uses это понятно, я немного не так пояснил проблему) куда "засунуть" скачанный файл, чтобы библиотека привязалась? просто в папку с проектом?



Добавил(а): Admin Дата: 2012-07-24
По-моему да, просто в папку с проектом. Если не выходит, киньте в папку C:\Program Files (x86)\Borland\Delphi7\Lib



Добавил(а): Drimer Дата: 2012-12-05
немогу скачать файл DGLUT.PAS вибрасиваєт мне как текст ((( што мне зделать?)))



Добавил(а): Admin Дата: 2012-12-06
Нажми ПКМ и выбери "Сохранить как..."



Добавил(а): Doggy Дата: 2013-01-12
thank you!!!



Добавил(а): gasmator Дата: 2013-05-11
у меня вместо куба квадрат рисует



Добавил(а): Klesh Дата: 2013-05-11
Для куба надо использовать glutSolidCube, попробуй повернуть на 45 градусов куб, сразу станет ясно.



Добавил(а): Joker1999obp Дата: 2013-10-17
почему у меня после освешения куб просто стал не белым а серим и всю



Добавил(а): Joker1999obp Дата: 2013-10-19
и как повернуть куб или другой 3D объект ?



Добавил(а): kordalk Дата: 2014-01-06
glRotatef(x,y,z,Angle);



Добавил(а): romankononovich Дата: 2014-04-28
Как можно сделать отсечение сферы и получить полусферу?



Добавил(а): Dionis Дата: 2014-09-26
а как реализовать рисование фигур с помощью кнопок????



Добавил(а): revolution Дата: 2014-10-02
Хм... При добавлении кода glutSolidCube(1); ничего не происходит. Все делал в точности как и в уроке, ошибок нет. Подскажите пожалуйста что делать



Добавил(а): Dionis Дата: 2014-10-03
всё должно работать, если ты с кнопкой или таймером работаешь, то её процедура должна описана как и форм_паинт на предыдущих уроках: например: FormResize(Sender);//процедура обновления if GetAsyncKeyState(VK_LEFT)<>0 then angle:=angle+0.5; if GetAsyncKeyState(VK_RIGHT)<>0 then angle:=angle-0.5; glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT ); glRotatef(angle,0,0,1); glpushMatrix; glTranslatef(-5,0,0); glutSolidCube(1); //Куб glPopmatrix; SwapBuffers(Canvas.Handle);



Добавил(а): postfedor Дата: 2015-09-18



Добавил(а): Ultimate.Warrior Дата: 2015-12-26
Можно ли наложить текстуры на эти фигуры?



Добавил(а): Episkop Дата: 2016-04-20
А как нарисовать цилиндр?


  1. SbhYE
    SbhYE 10 months ago
    Pills prescribing information. Long-Term Effects. <a href="https://viagra4u.top">where to get viagra</a> in USA. All about medication. Read information now.
    [url=https://goprint.pk/products/1924/best-wife-ever]Some trends of medication.[/url] [url=https://liselefaucheux.com/boutique/commander/carnet-de-voyage/#comment-23387]Actual information about drugs.[/url] [url=http://image.com.jo/?attachment_id=23379]All news about medication.[/url] 06a2825
  2. oyxbryzgmk
    oyxbryzgmk 8 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.gnpwnp85896reii5e72q23r07gq05k17s.org/]uoyxbryzgmk[/url]
    <a href="http://www.gnpwnp85896reii5e72q23r07gq05k17s.org/">aoyxbryzgmk</a>
    oyxbryzgmk http://www.gnpwnp85896reii5e72q23r07gq05k17s.org/
  3. onooxtzvw
    onooxtzvw 7 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.g1f361b5tn4ok37lym3q30lqb98o70k2s.org/">aonooxtzvw</a>
    [url=http://www.g1f361b5tn4ok37lym3q30lqb98o70k2s.org/]uonooxtzvw[/url]
    onooxtzvw http://www.g1f361b5tn4ok37lym3q30lqb98o70k2s.org/
  4. nqqncheoo
    nqqncheoo 7 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.gd07ive85664oxe3vi6llqb61j694k30s.org/]unqqncheoo[/url]
    nqqncheoo http://www.gd07ive85664oxe3vi6llqb61j694k30s.org/
    <a href="http://www.gd07ive85664oxe3vi6llqb61j694k30s.org/">anqqncheoo</a>
  5. rmtqgllzwi
    rmtqgllzwi 5 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.g6dt63lz7t9883dv968i59sqhs53ab4cs.org/]urmtqgllzwi[/url]
    rmtqgllzwi http://www.g6dt63lz7t9883dv968i59sqhs53ab4cs.org/
    <a href="http://www.g6dt63lz7t9883dv968i59sqhs53ab4cs.org/">armtqgllzwi</a>
  6. ikncypzgq
    ikncypzgq 4 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.gi4e74hj2z8f2botg13v1uf007o970y7s.org/">aikncypzgq</a>
    ikncypzgq http://www.gi4e74hj2z8f2botg13v1uf007o970y7s.org/
    [url=http://www.gi4e74hj2z8f2botg13v1uf007o970y7s.org/]uikncypzgq[/url]
  7. nghdwhlhej
    nghdwhlhej 4 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    nghdwhlhej http://www.gw07rb5h4zsah7j290q8g48sc6l92z36s.org/
    [url=http://www.gw07rb5h4zsah7j290q8g48sc6l92z36s.org/]unghdwhlhej[/url]
    <a href="http://www.gw07rb5h4zsah7j290q8g48sc6l92z36s.org/">anghdwhlhej</a>
  8. igstnojth
    igstnojth 4 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.ga93r12a6a0eg29xpe6t476384qnqq3bs.org/]uigstnojth[/url]
    <a href="http://www.ga93r12a6a0eg29xpe6t476384qnqq3bs.org/">aigstnojth</a>
    igstnojth http://www.ga93r12a6a0eg29xpe6t476384qnqq3bs.org/
  9. rskzmvjz
    rskzmvjz 4 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.g8z23hx15nc6f89ynfd79q72v46p3ka0s.org/]urskzmvjz[/url]
    <a href="http://www.g8z23hx15nc6f89ynfd79q72v46p3ka0s.org/">arskzmvjz</a>
    rskzmvjz http://www.g8z23hx15nc6f89ynfd79q72v46p3ka0s.org/
  10. qijhbkjcel
    qijhbkjcel 3 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.gb5409bkn4457j5o986u5m64x6nifiyvs.org/]uqijhbkjcel[/url]
    <a href="http://www.gb5409bkn4457j5o986u5m64x6nifiyvs.org/">aqijhbkjcel</a>
    qijhbkjcel http://www.gb5409bkn4457j5o986u5m64x6nifiyvs.org/
  11. igyjzojhhi
    igyjzojhhi 3 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    igyjzojhhi http://www.ga5w86z6pfh2o7a4vi6p003mm7n66e07s.org/
    [url=http://www.ga5w86z6pfh2o7a4vi6p003mm7n66e07s.org/]uigyjzojhhi[/url]
    <a href="http://www.ga5w86z6pfh2o7a4vi6p003mm7n66e07s.org/">aigyjzojhhi</a>
  12. nrrncjrl
    nrrncjrl 3 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    nrrncjrl http://www.g2ru0866quj1a526ku6a720fgv7qi8q6s.org/
    <a href="http://www.g2ru0866quj1a526ku6a720fgv7qi8q6s.org/">anrrncjrl</a>
    [url=http://www.g2ru0866quj1a526ku6a720fgv7qi8q6s.org/]unrrncjrl[/url]
  13. gmiblgegvm
    gmiblgegvm 2 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.gg23tnkoq15pi7p88y46o8ja341t20y5s.org/">agmiblgegvm</a>
    [url=http://www.gg23tnkoq15pi7p88y46o8ja341t20y5s.org/]ugmiblgegvm[/url]
    gmiblgegvm http://www.gg23tnkoq15pi7p88y46o8ja341t20y5s.org/
  14. fgmcqyptwy
    fgmcqyptwy 2 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    fgmcqyptwy http://www.gxsnn3w3a35fe72s145702axs6c8y2q1s.org/
    [url=http://www.gxsnn3w3a35fe72s145702axs6c8y2q1s.org/]ufgmcqyptwy[/url]
    <a href="http://www.gxsnn3w3a35fe72s145702axs6c8y2q1s.org/">afgmcqyptwy</a>
  15. teilytpjb
    teilytpjb 2 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    teilytpjb http://www.geh860dryay4mh42g401t7826p2l21ccs.org/
    [url=http://www.geh860dryay4mh42g401t7826p2l21ccs.org/]uteilytpjb[/url]
    <a href="http://www.geh860dryay4mh42g401t7826p2l21ccs.org/">ateilytpjb</a>
  16. qscyhygej
    qscyhygej 2 months ago
    Урок 3 - Объёмные фигуры - The Delphi
    qscyhygej http://www.g7w7b6g50j8383qh6jzhg965oje08q6ws.org/
    [url=http://www.g7w7b6g50j8383qh6jzhg965oje08q6ws.org/]uqscyhygej[/url]
    <a href="http://www.g7w7b6g50j8383qh6jzhg965oje08q6ws.org/">aqscyhygej</a>
  17. lowopmkpvb
    lowopmkpvb a month ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.g05nn355ck7r0li82qozf4h18p83dq85s.org/">alowopmkpvb</a>
    lowopmkpvb http://www.g05nn355ck7r0li82qozf4h18p83dq85s.org/
    [url=http://www.g05nn355ck7r0li82qozf4h18p83dq85s.org/]ulowopmkpvb[/url]
  18. bhfnyfzce
    bhfnyfzce a month ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.g0025vl1b7p557h5q2u4bi3rieit783ts.org/]ubhfnyfzce[/url]
    bhfnyfzce http://www.g0025vl1b7p557h5q2u4bi3rieit783ts.org/
    <a href="http://www.g0025vl1b7p557h5q2u4bi3rieit783ts.org/">abhfnyfzce</a>
  19. jlneklctti
    jlneklctti a month ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.g27bx1yyjthdk9rl7q21475yy44928p2s.org/]ujlneklctti[/url]
    jlneklctti http://www.g27bx1yyjthdk9rl7q21475yy44928p2s.org/
    <a href="http://www.g27bx1yyjthdk9rl7q21475yy44928p2s.org/">ajlneklctti</a>
  20. Лаура
    Лаура a month ago
    www.kstu.kz
  21. sxyvlwrzc
    sxyvlwrzc a month ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.g2qekv24rtlx7p5w5a666a6l8732i86os.org/]usxyvlwrzc[/url]
    sxyvlwrzc http://www.g2qekv24rtlx7p5w5a666a6l8732i86os.org/
    <a href="http://www.g2qekv24rtlx7p5w5a666a6l8732i86os.org/">asxyvlwrzc</a>
  22. Stacyhussy
    Stacyhussy a month ago


    [url=https://vulkanmaximum1.ru/pin-up-kazino-ofitsialniy-sayt-igrat-onlayn.php]pin up казино официальный сайт играть онлайн[/url] [url=https://vulkanmega2.ru/sayt-pin-up-otzivi.php]сайт pin up отзывы[/url] [url=https://betsofa-casino-online.com/mostbet-aktsii-pri-registratsii.php]mostbet акции при регистрации[/url] [url=https://mel-bet1.ru/odin-h-bet-bukmekerskaya-skachat.php]один х бет букмекерская скачать[/url] [url=https://zoloto-loto-ua.com/1x-1.php]1/x[/url]



    [url=https://betsofa-casino-online.com/mostbet-vhod-rossiya.php]мостбет вход россия[/url] [url=https://vulkanprestizh1.ru/daily-mail-feed.php]daily mail feed[/url] [url=https://clubvulkans.ru/skachat-1hbet.php]скачать 1хbet[/url] [url=https://vulkanplus1.ru/pinap-kazino-mobilnaya-versiya.php]пинап казино мобильная версия[/url] [url=https://reelemperor-cas.com/stavki-1-x-bet-onlayn.php]ставки 1 x bet онлайн[/url]

  23. bzkvwjbxzq
    bzkvwjbxzq a month ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.guo2087755274gojld2n5a780zivl2jfs.org/">abzkvwjbxzq</a>
    [url=http://www.guo2087755274gojld2n5a780zivl2jfs.org/]ubzkvwjbxzq[/url]
    bzkvwjbxzq http://www.guo2087755274gojld2n5a780zivl2jfs.org/
  24. ezzvnkekyc
    ezzvnkekyc 27 days ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.g0osy3a085epl3pam249u9lzp27285j2s.org/">aezzvnkekyc</a>
    [url=http://www.g0osy3a085epl3pam249u9lzp27285j2s.org/]uezzvnkekyc[/url]
    ezzvnkekyc http://www.g0osy3a085epl3pam249u9lzp27285j2s.org/
  25. nokfrzot
    nokfrzot 24 days ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.gm0r0fj490u0e05er4rmd264u2u8k80as.org/">anokfrzot</a>
    nokfrzot http://www.gm0r0fj490u0e05er4rmd264u2u8k80as.org/
    [url=http://www.gm0r0fj490u0e05er4rmd264u2u8k80as.org/]unokfrzot[/url]
  26. comklxmwz
    comklxmwz 23 days ago
    Урок 3 - Объёмные фигуры - The Delphi
    [url=http://www.gr3g07o4fhccyh2e5o0b691z4930t9p2s.org/]ucomklxmwz[/url]
    comklxmwz http://www.gr3g07o4fhccyh2e5o0b691z4930t9p2s.org/
    <a href="http://www.gr3g07o4fhccyh2e5o0b691z4930t9p2s.org/">acomklxmwz</a>
  27. onoiiecdq
    onoiiecdq 8 days ago
    Урок 3 - Объёмные фигуры - The Delphi
    <a href="http://www.gw16k3798v6osdhlq23g59rd49cj5e00s.org/">aonoiiecdq</a>
    [url=http://www.gw16k3798v6osdhlq23g59rd49cj5e00s.org/]uonoiiecdq[/url]
    onoiiecdq http://www.gw16k3798v6osdhlq23g59rd49cj5e00s.org/
  28. JesseDop
    JesseDop 4 days ago
    slottica bonus za rejestracjД™ slottica bonus bez depozytu slottica wypЕ‚ata slottica wyplata slottica bonus slottica aplikacja slottica darmowe spiny slottica zaloguj slottica pl slottica free spins slottica bonus bez depozytu 2021 slottica slottica casino slottica 23 slottica logowanie

    slottica casino [url=https://slottica-pl.com]slottica aplikacja[/url] slottica 23 [url=https://slottica-pl.com/category/gry-darmowe]slottica darmowe spiny[/url] slottica 18 [url=https://slottica-pl.com]slottica wypЕ‚ata[/url] slottica [url=https://slottica-pl.com]slottica opinie[/url] slottica pl [url=https://slottica-pl.com]slottica kasyno[/url]

    slottica logowanie slottica 18 slottica wypЕ‚ata slottica pl slottica 20 slottica slottica darmowe spiny slottica aplikacja slottica bonus bez depozytu slottica 23

    slottica 20 [url=https://slottica-pl.com]slottica kasyno[/url] slottica wypЕ‚ata [url=https://slottica-pl.com]slottica wypЕ‚ata[/url] slottica opinie [url=https://slottica-pl.com]slottica wypЕ‚ata[/url] slottica casino [url=https://slottica-pl.com]slottica 20[/url] slottica casino [url=https://slottica-pl.com/category/gry-darmowe]slottica bonus bez depozytu[/url]

    slottica wypЕ‚ata slottica bonus bez depozytu 2021 slottica slottica opinie slottica casino
Отменить.