Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для ololo111
166 / 52 / 36
Регистрация: 13.04.2012
Сообщений: 620

добавление тени

27.02.2019, 20:50. Показов 1747. Ответов 1

Студворк — интернет-сервис помощи студентам
Народ помогите, как сюда тень добавить?


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL, DGLUT, Textures, Unit2, ExtGL;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  HRC : HGLRC ;
  Sphere_amb: array[0..3] of GLfloat = (0,0,0,0);
  Sphere_spec: array[0..3] of GLfloat = (3,2,0,0);
  Sphere_dif: array[0..3] of GLfloat = (1.3,1.1,1.1,0);
  Light_pos: array [0..3] of GLfloat = (1,1,1,1);
  shin: single = 10;
  Tex, Tex2: Uint;
  NeedShadow: Boolean = True;
implementation
 
{$R *.dfm}
 
  procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
 
 
procedure SetDCPixelFormat ( hdc : HDC );
 var
  pfd : TPixelFormatDescriptor;
  nPixelFormat : Integer;
 begin
  FillChar (pfd, SizeOf (pfd), 0);
  pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
   nPixelFormat := ChoosePixelFormat (hdc, @pfd);
  SetPixelFormat (hdc, nPixelFormat, @pfd);
 end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetDCPixelFormat(Canvas.Handle);
  hrc := wglCreateContext(Canvas.Handle);
  wglMakeCurrent(Canvas.Handle, hrc);
  glEnable(GL_DEPTH_TEST); // включаем проверку разрешения фигур (впереди стоящая закрывает фигуру за ней)
  glDepthFunc(GL_LEQUAL);  //тип проверки
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
    glEnable(GL_TEXTURE_2D);   //Включаем режим нааложения текстур
    glTexParameter (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //Параметры наложения текстуры
    glTexParameter (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); //Параметры наложения текстуры
    Loadtexture('Tex.tga',Tex,false);     //загружаем текстуру
    Loadtexture('Tex2.tga',Tex2,false);
 
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  glrotatef(90,1,0,0);
 
  Light_pos[2]:=3;   // изменение позиции источника света
  Light_pos[1]:=3;   // изменение позиции источника света
  Light_pos[0]:=1.3;
 
 glLightfv(GL_LIGHT0,GL_POSITION,@Light_pos);  // задаём позицию источника света
 
 glClearColor (0.4, 0.6, 0.8, 0); // цвет фона
 glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // очистка буфера цвета
 
 glmaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,@Sphere_amb);    //рассеянный цвет
 glmaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,@Sphere_spec);  //зеркальный цвет
 glmaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,@Sphere_dif);    //диффузный цвет
 glmaterialf(GL_FRONT_AND_BACK,GL_SHININESS,shin);          //мощность блика
 
 glBindTexture(GL_TEXTURE_2D, Tex);glpushMatrix;
  glTranslatef(-1,0.3,0);
  glScale(0.7,0.7,0.7);
  glutSolidTeapot(1);       //рисуем чайник
  glPopmatrix;
 
  glBindTexture(GL_TEXTURE_2D, Tex2);
  glPushMatrix();
  glScale(1,1,1.2);
  glTranslatef(-1,-1.3,0);
  RenderBox();              //рисуем куб
  glPopMatrix;
 
SwapBuffers(Canvas.Handle);
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
  glViewport(0, 0, ClientWidth, ClientHeight); //выделяем область куда будет выводиться наш буфер
  glMatrixMode ( GL_PROJECTION ); //переходим в матрицу проекции
  glLoadIdentity;  //Сбрасываем текущую матрицу
  glFrustum ( -1 , 1 , -1 , 1 , 1.25 , 100.0 ); //Область видимости
  glMatrixMode ( GL_MODELVIEW ); //переходим в модельную матрицу
  glLoadIdentity;//Сбрасываем текущую матрицу
  gluLookAt(3,1,1,0,0,0,0,0,1);  //позиция наблюдателя
  InvalidateRect ( Handle,nil,False );  //перерисовка формы
end;
 
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2019, 20:50
Ответы с готовыми решениями:

Изучаем тени
Здравствуйте Не секрет что нахождение каких-то базовых исходников в инете сейчас основной метод обучения/познания который используют...

Тени в 2D-игре
Visual C++ 10, OpenGL, и вся подобная бурда. Я пытался сделать тень следующим образом: ставил ClearColor в черный и у Quad'ов повышал...

Матрица тени
Кто разобрался с построением матрицы тени, обьясните принип построение или литературу на матчасть. /* Create a matrix that will...

1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
27.02.2019, 22:02
https://gamedev.ru/code/articles/?id=4177
http://www.programmersclub.ru/... 2%D1%8C-1/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2019, 22:02
Помогаю со студенческими работами здесь

Тени в opengl
Несколько дней уже лажу по гуглам пытаюсь освоить тени, но как то рассматриваются примеры которые в моем случае не очень подходящие да и не...

Тени от объектов
На скриншоте из данного примера объекты отбрасывают тень. http://fabiensanglard.net/shadowmapping/index.php При запуске у себя на...

Тени PCSS
Ребят, подскажите. Видимо, у меня как-то по-другому работает мыслительный процесс, но я не понимаю статью от nvidia. Там говорится об...

Не рисуются все тени
Добрый вечер! Нужно изобразить цилиндр, конус и шар, а также их тени, которые они отбрасывают. Вот кусок кода, который отрисовывает...

Проекционные тени в OpenGL
Всем доброго времени суток. Я пытался реализовать рисование теней в OpenGL, как показано в статье...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru