Rev 5278 | Rev 5381 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5278 | Rev 5380 | ||
---|---|---|---|
1 | use32 |
1 | use32 |
2 | org 0x0 |
2 | org 0x0 |
3 | db 'MENUET01' |
3 | db 'MENUET01' |
4 | dd 0x1 |
4 | dd 0x1 |
5 | dd start |
5 | dd start |
6 | dd i_end |
6 | dd i_end |
7 | dd mem,stacktop |
7 | dd mem,stacktop |
8 | dd 0,cur_dir_path |
8 | dd 0,cur_dir_path |
9 | 9 | ||
10 | include '../../../../../../programs/proc32.inc' |
10 | include '../../../../../../programs/proc32.inc' |
11 | include '../../../../../../programs/macros.inc' |
11 | include '../../../../../../programs/macros.inc' |
12 | include '../../../../../../programs/develop/libraries/box_lib/load_lib.mac' |
12 | include '../../../../../../programs/develop/libraries/box_lib/load_lib.mac' |
13 | include '../../../../../../programs/dll.inc' |
13 | include '../../../../../../programs/dll.inc' |
14 | include '../opengl_const.inc' |
14 | include '../opengl_const.inc' |
15 | 15 | ||
16 | @use_library |
16 | @use_library |
17 | 17 | ||
18 | align 4 |
18 | align 4 |
19 | start: |
19 | start: |
20 | load_library name_tgl, cur_dir_path, library_path, system_path, \ |
20 | load_library name_tgl, cur_dir_path, library_path, system_path, \ |
21 | err_message_found_lib, head_f_l, import_lib_tinygl, err_message_import, head_f_i |
21 | err_message_found_lib, head_f_l, import_lib_tinygl, err_message_import, head_f_i |
22 | cmp eax,-1 |
22 | cmp eax,-1 |
23 | jz button.exit |
23 | jz button.exit |
24 | 24 | ||
25 | mcall 40,0x27 |
25 | mcall 40,0x27 |
26 | 26 | ||
27 | stdcall [kosglMakeCurrent], 10,10,400,350,ctx1 |
27 | stdcall [kosglMakeCurrent], 10,10,400,350,ctx1 |
28 | stdcall [glEnable], GL_DEPTH_TEST |
28 | stdcall [glEnable], GL_DEPTH_TEST |
29 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
29 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
30 | stdcall [gluNewQuadric] |
30 | stdcall [gluNewQuadric] |
31 | mov [qObj],eax |
31 | mov [qObj],eax |
32 | 32 | ||
33 | stdcall [glClearColor], 0.25,0.25,0.25,0.0 |
33 | stdcall [glClearColor], 0.25,0.25,0.25,0.0 |
34 | stdcall [glShadeModel], GL_SMOOTH |
34 | stdcall [glShadeModel], GL_SMOOTH |
35 | 35 | ||
36 | call draw_3d |
36 | call draw_3d |
37 | 37 | ||
38 | align 4 |
38 | align 4 |
39 | red_win: |
39 | red_win: |
40 | call draw_window |
40 | call draw_window |
41 | 41 | ||
42 | align 4 |
42 | align 4 |
43 | still: |
43 | still: |
44 | mcall 10 |
44 | mcall 10 |
45 | cmp al,1 |
45 | cmp al,1 |
46 | jz red_win |
46 | jz red_win |
47 | cmp al,2 |
47 | cmp al,2 |
48 | jz key |
48 | jz key |
49 | cmp al,3 |
49 | cmp al,3 |
50 | jz button |
50 | jz button |
51 | jmp still |
51 | jmp still |
52 | 52 | ||
53 | align 4 |
53 | align 4 |
54 | draw_window: |
54 | draw_window: |
55 | pushad |
55 | pushad |
56 | mcall 12,1 |
56 | mcall 12,1 |
57 | 57 | ||
58 | mov edx,0x33ffffff ;0x73ffffff |
58 | mov edx,0x33ffffff ;0x73ffffff |
59 | mcall 0,(50 shl 16)+430,(30 shl 16)+400,,,caption |
59 | mcall 0,(50 shl 16)+430,(30 shl 16)+400,,,caption |
60 | stdcall [kosglSwapBuffers] |
60 | stdcall [kosglSwapBuffers] |
61 | 61 | ||
62 | mcall 12,2 |
62 | mcall 12,2 |
63 | popad |
63 | popad |
64 | ret |
64 | ret |
65 | 65 | ||
66 | align 4 |
66 | align 4 |
67 | key: |
67 | key: |
68 | mcall 2 |
68 | mcall 2 |
69 | 69 | ||
70 | cmp ah,27 ;Esc |
70 | cmp ah,27 ;Esc |
71 | je button.exit |
71 | je button.exit |
72 | 72 | ||
73 | cmp ah,61 ;+ |
73 | cmp ah,61 ;+ |
74 | jne @f |
74 | jne @f |
75 | fld dword[scale] |
75 | fld dword[scale] |
76 | fadd dword[delt_sc] |
76 | fadd dword[delt_sc] |
77 | fstp dword[scale] |
77 | fstp dword[scale] |
78 | call draw_3d |
78 | call draw_3d |
79 | stdcall [kosglSwapBuffers] |
79 | stdcall [kosglSwapBuffers] |
80 | @@: |
80 | @@: |
81 | cmp ah,45 ;- |
81 | cmp ah,45 ;- |
82 | jne @f |
82 | jne @f |
83 | fld dword[scale] |
83 | fld dword[scale] |
84 | fsub dword[delt_sc] |
84 | fsub dword[delt_sc] |
85 | fstp dword[scale] |
85 | fstp dword[scale] |
86 | call draw_3d |
86 | call draw_3d |
87 | stdcall [kosglSwapBuffers] |
87 | stdcall [kosglSwapBuffers] |
88 | @@: |
88 | @@: |
89 | cmp ah,178 ;Up |
89 | cmp ah,178 ;Up |
90 | jne @f |
90 | jne @f |
91 | fld dword[angle_y] |
91 | fld dword[angle_y] |
92 | fadd dword[delt_size] |
92 | fadd dword[delt_size] |
93 | fstp dword[angle_y] |
93 | fstp dword[angle_y] |
94 | call draw_3d |
94 | call draw_3d |
95 | stdcall [kosglSwapBuffers] |
95 | stdcall [kosglSwapBuffers] |
96 | @@: |
96 | @@: |
97 | cmp ah,177 ;Down |
97 | cmp ah,177 ;Down |
98 | jne @f |
98 | jne @f |
99 | fld dword[angle_y] |
99 | fld dword[angle_y] |
100 | fsub dword[delt_size] |
100 | fsub dword[delt_size] |
101 | fstp dword[angle_y] |
101 | fstp dword[angle_y] |
102 | call draw_3d |
102 | call draw_3d |
103 | stdcall [kosglSwapBuffers] |
103 | stdcall [kosglSwapBuffers] |
104 | @@: |
104 | @@: |
105 | cmp ah,176 ;Left |
105 | cmp ah,176 ;Left |
106 | jne @f |
106 | jne @f |
107 | fld dword[angle_z] |
107 | fld dword[angle_z] |
108 | fadd dword[delt_size] |
108 | fadd dword[delt_size] |
109 | fstp dword[angle_z] |
109 | fstp dword[angle_z] |
110 | call draw_3d |
110 | call draw_3d |
111 | stdcall [kosglSwapBuffers] |
111 | stdcall [kosglSwapBuffers] |
112 | @@: |
112 | @@: |
113 | cmp ah,179 ;Right |
113 | cmp ah,179 ;Right |
114 | jne @f |
114 | jne @f |
115 | fld dword[angle_z] |
115 | fld dword[angle_z] |
116 | fsub dword[delt_size] |
116 | fsub dword[delt_size] |
117 | fstp dword[angle_z] |
117 | fstp dword[angle_z] |
118 | call draw_3d |
118 | call draw_3d |
119 | stdcall [kosglSwapBuffers] |
119 | stdcall [kosglSwapBuffers] |
120 | @@: |
120 | @@: |
121 | 121 | ||
122 | jmp still |
122 | jmp still |
123 | 123 | ||
124 | align 4 |
124 | align 4 |
125 | button: |
125 | button: |
126 | mcall 17 |
126 | mcall 17 |
127 | cmp ah,1 |
127 | cmp ah,1 |
128 | jne still |
128 | jne still |
129 | .exit: |
129 | .exit: |
130 | stdcall [gluDeleteQuadric], [qObj] |
130 | stdcall [gluDeleteQuadric], [qObj] |
131 | mcall -1 |
131 | mcall -1 |
132 | 132 | ||
133 | 133 | ||
134 | align 4 |
134 | align 4 |
135 | caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
135 | caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
136 | align 4 |
136 | align 4 |
137 | ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
137 | ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
138 | ;sizeof.TinyGLContext = 28 |
138 | ;sizeof.TinyGLContext = 28 |
139 | 139 | ||
140 | align 4 |
140 | align 4 |
141 | draw_3d: |
141 | draw_3d: |
142 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
142 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
143 | 143 | ||
144 | stdcall [glPushMatrix] |
144 | stdcall [glPushMatrix] |
145 | call SetLight |
145 | call SetLight |
146 | 146 | ||
147 | stdcall [glTranslatef], 0.0,0.0,0.5 |
147 | stdcall [glTranslatef], 0.0,0.0,0.5 |
148 | stdcall [glScalef], [scale], [scale], [scale] |
148 | stdcall [glScalef], [scale], [scale], [scale] |
149 | 149 | ||
150 | stdcall [glColor3f], 1.0, 1.0, 0.0 |
150 | stdcall [glColor3f], 1.0, 1.0, 0.0 |
151 | stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
151 | stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
152 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
152 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
153 | stdcall [gluSphere], [qObj], 1.0, 32,32 |
153 | stdcall [gluSphere], [qObj], 1.0, 32,32 |
154 | 154 | ||
155 | stdcall [glColor3f], 1.0, 0.0, 0.0 |
155 | stdcall [glColor3f], 1.0, 0.0, 0.0 |
156 | stdcall [glTranslatef], -1.6,0.0,0.0 |
156 | stdcall [glTranslatef], -1.6,0.0,0.0 |
157 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
157 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
158 | 158 | ||
159 | stdcall [glColor3f], 0.0, 0.0, 1.0 |
159 | stdcall [glColor3f], 0.0, 0.0, 1.0 |
160 | stdcall [glTranslatef], 3.2,0.0,0.0 |
160 | stdcall [glTranslatef], 3.2,0.0,0.0 |
161 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
161 | stdcall [gluSphere], [qObj], 0.55, 16,16 |
162 | stdcall [glPopMatrix] |
162 | stdcall [glPopMatrix] |
163 | ret |
163 | ret |
164 | 164 | ||
165 | align 4 |
165 | align 4 |
166 | SetLight: |
166 | SetLight: |
167 | stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position |
167 | stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position |
168 | stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir |
168 | stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir |
169 | 169 | ||
170 | stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light |
170 | ; stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light |
171 | stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light |
171 | ; stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light |
172 | 172 | ||
173 | stdcall [glEnable], GL_COLOR_MATERIAL |
173 | stdcall [glEnable], GL_COLOR_MATERIAL |
174 | stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE |
174 | stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE |
175 | stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular |
175 | stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular |
176 | stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess |
176 | stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess |
177 | stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient |
177 | stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient |
178 | 178 | ||
179 | stdcall [glEnable],GL_LIGHTING |
179 | stdcall [glEnable],GL_LIGHTING |
180 | stdcall [glEnable],GL_LIGHT0 |
180 | ; stdcall [glEnable],GL_LIGHT0 |
181 | ret |
181 | ret |
182 | 182 | ||
183 | qObj dd 0 |
183 | qObj dd 0 |
184 | 184 | ||
185 | scale dd 0.4 |
185 | scale dd 0.4 |
186 | delt_sc dd 0.05 |
186 | delt_sc dd 0.05 |
187 | angle_z dd 0.0 |
187 | angle_z dd 0.0 |
188 | angle_y dd 0.0 |
188 | angle_y dd 0.0 |
189 | delt_size dd 3.0 |
189 | delt_size dd 3.0 |
190 | 190 | ||
191 | light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2] |
191 | light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2] |
192 | ;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии) |
192 | ;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии) |
193 | light_dir dd 0.0,0.0,0.0 ;направление лампы |
193 | light_dir dd 0.0,0.0,0.0 ;направление лампы |
194 | mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика |
194 | mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика |
195 | mat_shininess dd 3.0 ; Размер блика (обратная пропорция) |
195 | mat_shininess dd 3.0 ; Размер блика (обратная пропорция) |
196 | white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником |
196 | white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником |
197 | lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения |
197 | lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения |
198 | 198 | ||
199 | ;-------------------------------------------------- |
199 | ;-------------------------------------------------- |
200 | align 4 |
200 | align 4 |
201 | import_lib_tinygl: |
201 | import_lib_tinygl: |
202 | 202 | ||
203 | macro E_LIB n |
203 | macro E_LIB n |
204 | { |
204 | { |
205 | n dd sz_#n |
205 | n dd sz_#n |
206 | } |
206 | } |
207 | include '../export.inc' |
207 | include '../export.inc' |
208 | dd 0,0 |
208 | dd 0,0 |
209 | macro E_LIB n |
209 | macro E_LIB n |
210 | { |
210 | { |
211 | sz_#n db `n,0 |
211 | sz_#n db `n,0 |
212 | } |
212 | } |
213 | include '../export.inc' |
213 | include '../export.inc' |
214 | 214 | ||
215 | ;-------------------------------------------------- |
215 | ;-------------------------------------------------- |
216 | system_path db '/sys/lib/' |
216 | system_path db '/sys/lib/' |
217 | name_tgl db 'tinygl.obj',0 |
217 | name_tgl db 'tinygl.obj',0 |
218 | err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0 |
218 | err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0 |
219 | head_f_i: |
219 | head_f_i: |
220 | head_f_l db 'System error',0 |
220 | head_f_l db 'System error',0 |
221 | err_message_import db 'Error on load import library tinygl.obj',0 |
221 | err_message_import db 'Error on load import library tinygl.obj',0 |
222 | ;-------------------------------------------------- |
222 | ;-------------------------------------------------- |
223 | 223 | ||
224 | i_end: |
224 | i_end: |
225 | rb 1024 |
225 | rb 1024 |
226 | stacktop: |
226 | stacktop: |
227 | cur_dir_path: |
227 | cur_dir_path: |
228 | rb 4096 |
228 | rb 4096 |
229 | library_path: |
229 | library_path: |
230 | rb 4096 |
230 | rb 4096 |
231 | mem:-],[-> |
231 | mem:-],[-> |