Rev 8408 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8408 | Rev 8442 | ||
---|---|---|---|
1 | ; glVertex |
1 | ; glVertex |
2 | 2 | ||
3 | align 4 |
3 | align 4 |
4 | glVertex4f: ;x, y, z, w |
4 | glVertex4f: ;x, y, z, w |
5 | push dword[esp] ;копируем адрес возврата |
5 | push dword[esp] ;копируем адрес возврата |
6 | push eax |
6 | push eax |
7 | lea eax,[esp+8] |
7 | lea eax,[esp+8] |
8 | mov dword[eax],OP_Vertex |
8 | mov dword[eax],OP_Vertex |
9 | stdcall gl_add_op,eax |
9 | stdcall gl_add_op,eax |
10 | pop eax |
10 | pop eax |
11 | ret 20 ;=sizeof(dd)*5 |
11 | ret 20 ;=sizeof(dd)*5 |
12 | 12 | ||
13 | align 4 |
13 | align 4 |
14 | proc glVertex4d, x:qword, y:qword, z:qword, w:qword |
14 | proc glVertex4d, x:qword, y:qword, z:qword, w:qword |
15 | add esp,-16 |
15 | add esp,-16 |
16 | fld qword[w] |
16 | fld qword[w] |
17 | fstp dword[esp+12] |
17 | fstp dword[esp+12] |
18 | fld qword[z] |
18 | fld qword[z] |
19 | fstp dword[esp+8] |
19 | fstp dword[esp+8] |
20 | fld qword[y] |
20 | fld qword[y] |
21 | fstp dword[esp+4] |
21 | fstp dword[esp+4] |
22 | fld qword[x] |
22 | fld qword[x] |
23 | fstp dword[esp] |
23 | fstp dword[esp] |
24 | call glVertex4f |
24 | call glVertex4f |
25 | ret |
25 | ret |
26 | endp |
26 | endp |
27 | 27 | ||
28 | align 4 |
28 | align 4 |
29 | proc glVertex2f, x:dword, y:dword |
29 | proc glVertex2f, x:dword, y:dword |
30 | stdcall glVertex4f,[x],[y],0.0,1.0 |
30 | stdcall glVertex4f,[x],[y],0.0,1.0 |
31 | ret |
31 | ret |
32 | endp |
32 | endp |
33 | 33 | ||
34 | align 4 |
34 | align 4 |
35 | proc glVertex2d, x:qword, y:qword |
35 | proc glVertex2d, x:qword, y:qword |
36 | push 1.0 |
36 | push 1.0 |
37 | push 0.0 |
37 | push 0.0 |
38 | add esp,-8 |
38 | add esp,-8 |
39 | fld qword[y] |
39 | fld qword[y] |
40 | fstp dword[esp+4] |
40 | fstp dword[esp+4] |
41 | fld qword[x] |
41 | fld qword[x] |
42 | fstp dword[esp] |
42 | fstp dword[esp] |
43 | call glVertex4f |
43 | call glVertex4f |
44 | ret |
44 | ret |
45 | endp |
45 | endp |
46 | 46 | ||
47 | align 4 |
47 | align 4 |
48 | proc glVertex2fv uses eax, v:dword |
48 | proc glVertex2fv uses eax, v:dword |
49 | mov eax,[v] |
49 | mov eax,[v] |
50 | stdcall glVertex4f,[eax],[eax+4],0.0,1.0 |
50 | stdcall glVertex4f,[eax],[eax+4],0.0,1.0 |
51 | ret |
51 | ret |
52 | endp |
52 | endp |
53 | 53 | ||
54 | align 4 |
54 | align 4 |
55 | proc glVertex2dv uses eax, v:dword |
55 | proc glVertex2dv uses eax, v:dword |
56 | mov eax,[v] |
56 | mov eax,[v] |
57 | push 1.0 |
57 | push 1.0 |
58 | push 0.0 |
58 | push 0.0 |
59 | add esp,-8 |
59 | add esp,-8 |
60 | fld qword[eax+8] |
60 | fld qword[eax+8] |
61 | fstp dword[esp+4] |
61 | fstp dword[esp+4] |
62 | fld qword[eax] |
62 | fld qword[eax] |
63 | fstp dword[esp] |
63 | fstp dword[esp] |
64 | call glVertex4f |
64 | call glVertex4f |
65 | ret |
65 | ret |
66 | endp |
66 | endp |
67 | 67 | ||
68 | align 4 |
68 | align 4 |
69 | proc glVertex3f, x:dword, y:dword, z:dword |
69 | proc glVertex3f, x:dword, y:dword, z:dword |
70 | stdcall glVertex4f,[x],[y],[z],1.0 |
70 | stdcall glVertex4f,[x],[y],[z],1.0 |
71 | ret |
71 | ret |
72 | endp |
72 | endp |
73 | 73 | ||
74 | align 4 |
74 | align 4 |
75 | proc glVertex3d, x:qword, y:qword, z:qword |
75 | proc glVertex3d, x:qword, y:qword, z:qword |
76 | push 1.0 |
76 | push 1.0 |
77 | add esp,-12 |
77 | add esp,-12 |
78 | fld qword[z] |
78 | fld qword[z] |
79 | fstp dword[esp+8] |
79 | fstp dword[esp+8] |
80 | fld qword[y] |
80 | fld qword[y] |
81 | fstp dword[esp+4] |
81 | fstp dword[esp+4] |
82 | fld qword[x] |
82 | fld qword[x] |
83 | fstp dword[esp] |
83 | fstp dword[esp] |
84 | call glVertex4f |
84 | call glVertex4f |
85 | ret |
85 | ret |
86 | endp |
86 | endp |
87 | 87 | ||
88 | align 4 |
88 | align 4 |
89 | proc glVertex3fv uses eax, v:dword |
89 | proc glVertex3fv uses eax, v:dword |
90 | mov eax,[v] |
90 | mov eax,[v] |
91 | stdcall glVertex4f,[eax],[eax+4],[eax+8],1.0 |
91 | stdcall glVertex4f,[eax],[eax+4],[eax+8],1.0 |
92 | ret |
92 | ret |
93 | endp |
93 | endp |
94 | 94 | ||
95 | align 4 |
95 | align 4 |
96 | proc glVertex3dv uses eax, v:dword |
96 | proc glVertex3dv uses eax, v:dword |
97 | mov eax,[v] |
97 | mov eax,[v] |
98 | push 1.0 |
98 | push 1.0 |
99 | add esp,-12 |
99 | add esp,-12 |
100 | fld qword[eax+16] |
100 | fld qword[eax+16] |
101 | fstp dword[esp+8] |
101 | fstp dword[esp+8] |
102 | fld qword[eax+8] |
102 | fld qword[eax+8] |
103 | fstp dword[esp+4] |
103 | fstp dword[esp+4] |
104 | fld qword[eax] |
104 | fld qword[eax] |
105 | fstp dword[esp] |
105 | fstp dword[esp] |
106 | call glVertex4f |
106 | call glVertex4f |
107 | ret |
107 | ret |
108 | endp |
108 | endp |
109 | 109 | ||
110 | align 4 |
110 | align 4 |
111 | proc glVertex4fv uses eax, v:dword |
111 | proc glVertex4fv uses eax, v:dword |
112 | mov eax,[v] |
112 | mov eax,[v] |
113 | stdcall glVertex4f,[eax],[eax+4],[eax+8],[eax+12] |
113 | stdcall glVertex4f,[eax],[eax+4],[eax+8],[eax+12] |
114 | ret |
114 | ret |
115 | endp |
115 | endp |
116 | 116 | ||
117 | align 4 |
117 | align 4 |
118 | proc glVertex4dv uses eax, v:dword |
118 | proc glVertex4dv uses eax, v:dword |
119 | mov eax,[v] |
119 | mov eax,[v] |
120 | add esp,-16 |
120 | add esp,-16 |
121 | fld qword[eax+24] |
121 | fld qword[eax+24] |
122 | fstp dword[esp+12] |
122 | fstp dword[esp+12] |
123 | fld qword[eax+16] |
123 | fld qword[eax+16] |
124 | fstp dword[esp+8] |
124 | fstp dword[esp+8] |
125 | fld qword[eax+8] |
125 | fld qword[eax+8] |
126 | fstp dword[esp+4] |
126 | fstp dword[esp+4] |
127 | fld qword[eax] |
127 | fld qword[eax] |
128 | fstp dword[esp] |
128 | fstp dword[esp] |
129 | call glVertex4f |
129 | call glVertex4f |
130 | ret |
130 | ret |
131 | endp |
131 | endp |
132 | 132 | ||
133 | ; glNormal |
133 | ; glNormal |
134 | 134 | ||
135 | align 4 |
135 | align 4 |
136 | glNormal3f: ;x, y, z |
136 | glNormal3f: ;x, y, z |
137 | push dword[esp] ;копируем адрес возврата |
137 | push dword[esp] ;копируем адрес возврата |
138 | push eax |
138 | push eax |
139 | lea eax,[esp+8] |
139 | lea eax,[esp+8] |
140 | mov dword[eax],OP_Normal |
140 | mov dword[eax],OP_Normal |
141 | stdcall gl_add_op,eax |
141 | stdcall gl_add_op,eax |
142 | pop eax |
142 | pop eax |
143 | ret 16 ;=sizeof(dd)*4 |
143 | ret 16 ;=sizeof(dd)*4 |
144 | 144 | ||
145 | align 4 |
145 | align 4 |
- | 146 | proc glNormal3d, x:qword, y:qword, z:qword |
|
- | 147 | add esp,-12 |
|
- | 148 | fld qword[z] |
|
- | 149 | fstp dword[esp+8] |
|
- | 150 | fld qword[y] |
|
- | 151 | fstp dword[esp+4] |
|
- | 152 | fld qword[x] |
|
- | 153 | fstp dword[esp] |
|
- | 154 | call glNormal3f |
|
- | 155 | ret |
|
- | 156 | endp |
|
- | 157 | ||
- | 158 | align 4 |
|
146 | proc glNormal3fv uses eax, v:dword |
159 | proc glNormal3fv uses eax, v:dword |
147 | mov eax,[v] |
160 | mov eax,[v] |
148 | stdcall glNormal3f,[eax],[eax+4],[eax+8] |
161 | stdcall glNormal3f,[eax],[eax+4],[eax+8] |
149 | ret |
162 | ret |
150 | endp |
163 | endp |
- | 164 | ||
- | 165 | align 4 |
|
- | 166 | proc glNormal3dv uses eax, v:dword |
|
- | 167 | mov eax,[v] |
|
- | 168 | add esp,-12 |
|
- | 169 | fld qword[eax+16] |
|
- | 170 | fstp dword[esp+8] |
|
- | 171 | fld qword[eax+8] |
|
- | 172 | fstp dword[esp+4] |
|
- | 173 | fld qword[eax] |
|
- | 174 | fstp dword[esp] |
|
- | 175 | call glNormal3f |
|
- | 176 | ret |
|
- | 177 | endp |
|
151 | 178 | ||
152 | ; glColor |
179 | ; glColor |
153 | 180 | ||
154 | align 4 |
181 | align 4 |
155 | proc glColor4f uses eax, r:dword, g:dword, b:dword, a:dword |
182 | proc glColor4f uses eax, r:dword, g:dword, b:dword, a:dword |
156 | locals |
183 | locals |
157 | p rd 8 |
184 | p rd 8 |
158 | endl |
185 | endl |
159 | mov dword[p],OP_Color |
186 | mov dword[p],OP_Color |
160 | mov eax,[b] |
187 | mov eax,[b] |
161 | mov dword[p+4],eax |
188 | mov dword[p+4],eax |
162 | mov eax,[g] |
189 | mov eax,[g] |
163 | mov dword[p+8],eax |
190 | mov dword[p+8],eax |
164 | mov eax,[r] |
191 | mov eax,[r] |
165 | mov dword[p+12],eax |
192 | mov dword[p+12],eax |
166 | mov eax,[a] |
193 | mov eax,[a] |
167 | mov dword[p+16],eax |
194 | mov dword[p+16],eax |
168 | ; direct convertion to integer to go faster if no shading |
195 | ; direct convertion to integer to go faster if no shading |
169 | lea eax,[ebp-12] ;ebp-12 = &p[5] |
196 | lea eax,[ebp-12] ;ebp-12 = &p[5] |
170 | push eax |
197 | push eax |
171 | add eax,4 ;ebp-8 = &p[6] |
198 | add eax,4 ;ebp-8 = &p[6] |
172 | push eax |
199 | push eax |
173 | add eax,4 ;ebp-4 = &p[7] |
200 | add eax,4 ;ebp-4 = &p[7] |
174 | push eax |
201 | push eax |
175 | stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5] |
202 | stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5] |
176 | 203 | ||
177 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
204 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
178 | stdcall gl_add_op,eax |
205 | stdcall gl_add_op,eax |
179 | ret |
206 | ret |
180 | endp |
207 | endp |
181 | 208 | ||
182 | align 4 |
209 | align 4 |
- | 210 | proc glColor4d, r:qword, g:qword, b:qword, a:qword |
|
- | 211 | add esp,-16 |
|
- | 212 | fld qword[a] |
|
- | 213 | fstp dword[esp+12] |
|
- | 214 | fld qword[b] |
|
- | 215 | fstp dword[esp+8] |
|
- | 216 | fld qword[g] |
|
- | 217 | fstp dword[esp+4] |
|
- | 218 | fld qword[r] |
|
- | 219 | fstp dword[esp] |
|
- | 220 | call glColor4f |
|
- | 221 | ret |
|
- | 222 | endp |
|
- | 223 | ||
- | 224 | align 4 |
|
183 | proc glColor4fv uses eax ebx, v:dword |
225 | proc glColor4fv uses eax ebx, v:dword |
184 | mov eax,[v] |
226 | mov eax,[v] |
185 | stdcall glColor4f,[eax],[eax+4],[eax+8],[eax+12],1.0 |
227 | stdcall glColor4f,[eax],[eax+4],[eax+8],[eax+12],1.0 |
186 | ret |
228 | ret |
187 | endp |
229 | endp |
188 | 230 | ||
189 | align 4 |
231 | align 4 |
190 | proc glColor3f, r:dword, g:dword, b:dword |
232 | proc glColor3f, r:dword, g:dword, b:dword |
191 | stdcall glColor4f,[r],[g],[b],1.0 |
233 | stdcall glColor4f,[r],[g],[b],1.0 |
192 | ret |
234 | ret |
193 | endp |
235 | endp |
194 | 236 | ||
195 | align 4 |
237 | align 4 |
- | 238 | proc glColor3d, r:qword, g:qword, b:qword |
|
- | 239 | push 1.0 |
|
- | 240 | add esp,-12 |
|
- | 241 | fld qword[b] |
|
- | 242 | fstp dword[esp+8] |
|
- | 243 | fld qword[g] |
|
- | 244 | fstp dword[esp+4] |
|
- | 245 | fld qword[r] |
|
- | 246 | fstp dword[esp] |
|
- | 247 | call glColor4f |
|
- | 248 | ret |
|
- | 249 | endp |
|
- | 250 | ||
- | 251 | align 4 |
|
196 | proc glColor3fv uses eax, v:dword |
252 | proc glColor3fv uses eax, v:dword |
197 | mov eax,[v] |
253 | mov eax,[v] |
198 | stdcall glColor4f,[eax],[eax+4],[eax+8],1.0 |
254 | stdcall glColor4f,[eax],[eax+4],[eax+8],1.0 |
199 | ret |
255 | ret |
200 | endp |
256 | endp |
201 | 257 | ||
202 | align 4 |
258 | align 4 |
- | 259 | proc glColor3dv uses eax, v:dword |
|
- | 260 | mov eax,[v] |
|
- | 261 | push 1.0 |
|
- | 262 | add esp,-12 |
|
- | 263 | fld qword[eax+16] |
|
- | 264 | fstp dword[esp+8] |
|
- | 265 | fld qword[eax+8] |
|
- | 266 | fstp dword[esp+4] |
|
- | 267 | fld qword[eax] |
|
- | 268 | fstp dword[esp] |
|
- | 269 | call glColor4f |
|
- | 270 | ret |
|
- | 271 | endp |
|
- | 272 | ||
- | 273 | align 4 |
|
203 | fl_255 dd 255.0 |
274 | fl_255 dd 255.0 |
204 | 275 | ||
205 | align 4 |
276 | align 4 |
206 | proc glColor3ub uses eax, r:dword, g:dword, b:dword |
277 | proc glColor3ub uses eax, r:dword, g:dword, b:dword |
207 | push dword 1.0 |
278 | push dword 1.0 |
208 | fld dword[fl_255] |
279 | fld dword[fl_255] |
209 | 280 | ||
210 | movzx eax,byte[b] |
281 | movzx eax,byte[b] |
211 | mov dword[esp-4],eax |
282 | mov dword[esp-4],eax |
212 | fild dword[esp-4] |
283 | fild dword[esp-4] |
213 | fdiv st0,st1 |
284 | fdiv st0,st1 |
214 | fstp dword[esp-4] ;преобразовали int во float |
285 | fstp dword[esp-4] ;преобразовали int во float |
215 | movzx eax,byte[g] |
286 | movzx eax,byte[g] |
216 | mov dword[esp-8],eax |
287 | mov dword[esp-8],eax |
217 | fild dword[esp-8] |
288 | fild dword[esp-8] |
218 | fdiv st0,st1 |
289 | fdiv st0,st1 |
219 | fstp dword[esp-8] |
290 | fstp dword[esp-8] |
220 | movzx eax,byte[r] |
291 | movzx eax,byte[r] |
221 | mov dword[esp-12],eax |
292 | mov dword[esp-12],eax |
222 | fild dword[esp-12] |
293 | fild dword[esp-12] |
223 | fdiv st0,st1 |
294 | fdiv st0,st1 |
224 | fstp dword[esp-12] |
295 | fstp dword[esp-12] |
225 | 296 | ||
226 | ffree st0 |
297 | ffree st0 |
227 | fincstp |
298 | fincstp |
228 | sub esp,12 |
299 | sub esp,12 |
229 | call glColor4f |
300 | call glColor4f |
230 | ret |
301 | ret |
231 | endp |
302 | endp |
- | 303 | ||
- | 304 | align 4 |
|
- | 305 | proc glColor4dv uses eax, v:dword |
|
- | 306 | mov eax,[v] |
|
- | 307 | add esp,-16 |
|
- | 308 | fld qword[eax+24] |
|
- | 309 | fstp dword[esp+12] |
|
- | 310 | fld qword[eax+16] |
|
- | 311 | fstp dword[esp+8] |
|
- | 312 | fld qword[eax+8] |
|
- | 313 | fstp dword[esp+4] |
|
- | 314 | fld qword[eax] |
|
- | 315 | fstp dword[esp] |
|
- | 316 | call glColor4f |
|
- | 317 | ret |
|
- | 318 | endp |
|
232 | 319 | ||
233 | ; TexCoord |
320 | ; TexCoord |
234 | 321 | ||
235 | align 4 |
322 | align 4 |
236 | glTexCoord4f: ;s, t, r, q |
323 | glTexCoord4f: ;s, t, r, q |
237 | push dword[esp] ;копируем адрес возврата |
324 | push dword[esp] ;копируем адрес возврата |
238 | push eax |
325 | push eax |
239 | lea eax,[esp+8] |
326 | lea eax,[esp+8] |
240 | mov dword[eax],OP_TexCoord |
327 | mov dword[eax],OP_TexCoord |
241 | stdcall gl_add_op,eax |
328 | stdcall gl_add_op,eax |
242 | pop eax |
329 | pop eax |
243 | ret 20 ;=sizeof(dd)*5 |
330 | ret 20 ;=sizeof(dd)*5 |
244 | 331 | ||
245 | align 4 |
332 | align 4 |
- | 333 | proc glTexCoord4d, s:qword, t:qword, r:qword, q:qword |
|
- | 334 | add esp,-16 |
|
- | 335 | fld qword[q] |
|
- | 336 | fstp dword[esp+12] |
|
- | 337 | fld qword[r] |
|
- | 338 | fstp dword[esp+8] |
|
- | 339 | fld qword[t] |
|
- | 340 | fstp dword[esp+4] |
|
- | 341 | fld qword[s] |
|
- | 342 | fstp dword[esp] |
|
- | 343 | call glTexCoord4f |
|
- | 344 | ret |
|
- | 345 | endp |
|
- | 346 | ||
- | 347 | align 4 |
|
- | 348 | proc glTexCoord1f, s:dword |
|
- | 349 | stdcall glTexCoord4f,[s],0.0,0.0,1.0 |
|
- | 350 | ret |
|
- | 351 | endp |
|
- | 352 | ||
- | 353 | align 4 |
|
- | 354 | proc glTexCoord1d, s:qword |
|
- | 355 | push 1.0 |
|
- | 356 | push 0.0 |
|
- | 357 | push 0.0 |
|
- | 358 | add esp,-4 |
|
- | 359 | fld qword[s] |
|
- | 360 | fstp dword[esp] |
|
- | 361 | call glTexCoord4f |
|
- | 362 | ret |
|
- | 363 | endp |
|
- | 364 | ||
- | 365 | align 4 |
|
- | 366 | proc glTexCoord1fv uses eax, v:dword |
|
- | 367 | mov eax,[v] |
|
- | 368 | stdcall glTexCoord4f,[eax],0.0,0.0,1.0 |
|
- | 369 | ret |
|
- | 370 | endp |
|
- | 371 | ||
- | 372 | align 4 |
|
- | 373 | proc glTexCoord1dv uses eax, v:dword |
|
- | 374 | mov eax,[v] |
|
- | 375 | push 1.0 |
|
- | 376 | push 0.0 |
|
- | 377 | push 0.0 |
|
- | 378 | add esp,-4 |
|
- | 379 | fld qword[eax] |
|
- | 380 | fstp dword[esp] |
|
- | 381 | call glTexCoord4f |
|
- | 382 | ret |
|
- | 383 | endp |
|
- | 384 | ||
- | 385 | align 4 |
|
246 | proc glTexCoord2f, s:dword, t:dword |
386 | proc glTexCoord2f, s:dword, t:dword |
247 | stdcall glTexCoord4f,[s],[t],0.0,1.0 |
387 | stdcall glTexCoord4f,[s],[t],0.0,1.0 |
248 | ret |
388 | ret |
249 | endp |
389 | endp |
250 | 390 | ||
251 | align 4 |
391 | align 4 |
- | 392 | proc glTexCoord2d, s:qword, t:qword |
|
- | 393 | push 1.0 |
|
- | 394 | push 0.0 |
|
- | 395 | add esp,-8 |
|
- | 396 | fld qword[t] |
|
- | 397 | fstp dword[esp+4] |
|
- | 398 | fld qword[s] |
|
- | 399 | fstp dword[esp] |
|
- | 400 | call glTexCoord4f |
|
- | 401 | ret |
|
- | 402 | endp |
|
- | 403 | ||
- | 404 | align 4 |
|
252 | proc glTexCoord2fv uses eax, v:dword |
405 | proc glTexCoord2fv uses eax, v:dword |
253 | mov eax,[v] |
406 | mov eax,[v] |
254 | stdcall glTexCoord4f,[eax],[eax+4],0.0,1.0 |
407 | stdcall glTexCoord4f,[eax],[eax+4],0.0,1.0 |
255 | ret |
408 | ret |
256 | endp |
409 | endp |
257 | 410 | ||
258 | align 4 |
411 | align 4 |
- | 412 | proc glTexCoord2dv uses eax, v:dword |
|
- | 413 | mov eax,[v] |
|
- | 414 | push 1.0 |
|
- | 415 | push 0.0 |
|
- | 416 | add esp,-8 |
|
- | 417 | fld qword[eax+8] |
|
- | 418 | fstp dword[esp+4] |
|
- | 419 | fld qword[eax] |
|
- | 420 | fstp dword[esp] |
|
- | 421 | call glTexCoord4f |
|
- | 422 | ret |
|
- | 423 | endp |
|
- | 424 | ||
- | 425 | align 4 |
|
- | 426 | proc glTexCoord3f, s:dword, t:dword, r:dword |
|
- | 427 | stdcall glTexCoord4f,[s],[t],[r],1.0 |
|
- | 428 | ret |
|
- | 429 | endp |
|
- | 430 | ||
- | 431 | align 4 |
|
- | 432 | proc glTexCoord3d, s:qword, t:qword, r:qword |
|
- | 433 | push 1.0 |
|
- | 434 | add esp,-12 |
|
- | 435 | fld qword[r] |
|
- | 436 | fstp dword[esp+8] |
|
- | 437 | fld qword[t] |
|
- | 438 | fstp dword[esp+4] |
|
- | 439 | fld qword[s] |
|
- | 440 | fstp dword[esp] |
|
- | 441 | call glTexCoord4f |
|
- | 442 | ret |
|
- | 443 | endp |
|
- | 444 | ||
- | 445 | align 4 |
|
- | 446 | proc glTexCoord3fv uses eax, v:dword |
|
- | 447 | mov eax,[v] |
|
- | 448 | stdcall glTexCoord4f,[eax],[eax+4],[eax+8],1.0 |
|
- | 449 | ret |
|
- | 450 | endp |
|
- | 451 | ||
- | 452 | align 4 |
|
- | 453 | proc glTexCoord3dv uses eax, v:dword |
|
- | 454 | mov eax,[v] |
|
- | 455 | push 1.0 |
|
- | 456 | add esp,-12 |
|
- | 457 | fld qword[eax+16] |
|
- | 458 | fstp dword[esp+8] |
|
- | 459 | fld qword[eax+8] |
|
- | 460 | fstp dword[esp+4] |
|
- | 461 | fld qword[eax] |
|
- | 462 | fstp dword[esp] |
|
- | 463 | call glTexCoord4f |
|
- | 464 | ret |
|
- | 465 | endp |
|
- | 466 | ||
- | 467 | align 4 |
|
- | 468 | proc glTexCoord4fv uses eax, v:dword |
|
- | 469 | mov eax,[v] |
|
- | 470 | stdcall glTexCoord4f,[eax],[eax+4],[eax+8],[eax+12] |
|
- | 471 | ret |
|
- | 472 | endp |
|
- | 473 | ||
- | 474 | align 4 |
|
- | 475 | proc glTexCoord4dv uses eax, v:dword |
|
- | 476 | mov eax,[v] |
|
- | 477 | add esp,-16 |
|
- | 478 | fld qword[eax+24] |
|
- | 479 | fstp dword[esp+12] |
|
- | 480 | fld qword[eax+16] |
|
- | 481 | fstp dword[esp+8] |
|
- | 482 | fld qword[eax+8] |
|
- | 483 | fstp dword[esp+4] |
|
- | 484 | fld qword[eax] |
|
- | 485 | fstp dword[esp] |
|
- | 486 | call glTexCoord4f |
|
- | 487 | ret |
|
- | 488 | endp |
|
- | 489 | ||
- | 490 | align 4 |
|
259 | glEdgeFlag: ;flag |
491 | glEdgeFlag: ;flag |
260 | push dword[esp] ;копируем адрес возврата |
492 | push dword[esp] ;копируем адрес возврата |
261 | push eax |
493 | push eax |
262 | lea eax,[esp+8] |
494 | lea eax,[esp+8] |
263 | mov dword[eax],OP_EdgeFlag |
495 | mov dword[eax],OP_EdgeFlag |
264 | stdcall gl_add_op,eax |
496 | stdcall gl_add_op,eax |
265 | pop eax |
497 | pop eax |
266 | ret 8 ;=sizeof(dd)*2 |
498 | ret 8 ;=sizeof(dd)*2 |
267 | 499 | ||
268 | ; misc |
500 | ; misc |
269 | 501 | ||
270 | align 4 |
502 | align 4 |
271 | glShadeModel: ;mode |
503 | glShadeModel: ;mode |
272 | ; assert(mode == GL_FLAT || mode == GL_SMOOTH); |
504 | ; assert(mode == GL_FLAT || mode == GL_SMOOTH); |
273 | push dword[esp] ;копируем адрес возврата |
505 | push dword[esp] ;копируем адрес возврата |
274 | push eax |
506 | push eax |
275 | lea eax,[esp+8] |
507 | lea eax,[esp+8] |
276 | mov dword[eax],OP_ShadeModel |
508 | mov dword[eax],OP_ShadeModel |
277 | stdcall gl_add_op,eax |
509 | stdcall gl_add_op,eax |
278 | pop eax |
510 | pop eax |
279 | ret 8 ;=sizeof(dd)*2 |
511 | ret 8 ;=sizeof(dd)*2 |
280 | 512 | ||
281 | align 4 |
513 | align 4 |
282 | glCullFace: ;mode |
514 | glCullFace: ;mode |
283 | ; assert(mode == GL_BACK || |
515 | ; assert(mode == GL_BACK || |
284 | ; mode == GL_FRONT || |
516 | ; mode == GL_FRONT || |
285 | ; mode == GL_FRONT_AND_BACK); |
517 | ; mode == GL_FRONT_AND_BACK); |
286 | push dword[esp] ;копируем адрес возврата |
518 | push dword[esp] ;копируем адрес возврата |
287 | push eax |
519 | push eax |
288 | lea eax,[esp+8] |
520 | lea eax,[esp+8] |
289 | mov dword[eax],OP_CullFace |
521 | mov dword[eax],OP_CullFace |
290 | stdcall gl_add_op,eax |
522 | stdcall gl_add_op,eax |
291 | pop eax |
523 | pop eax |
292 | ret 8 ;=sizeof(dd)*2 |
524 | ret 8 ;=sizeof(dd)*2 |
293 | 525 | ||
294 | align 4 |
526 | align 4 |
295 | proc glFrontFace uses eax, mode:dword |
527 | proc glFrontFace uses eax, mode:dword |
296 | locals |
528 | locals |
297 | p rd 2 |
529 | p rd 2 |
298 | endl |
530 | endl |
299 | 531 | ||
300 | ; assert(mode == GL_CCW || mode == GL_CW); |
532 | ; assert(mode == GL_CCW || mode == GL_CW); |
301 | 533 | ||
302 | mov dword[p],OP_FrontFace |
534 | mov dword[p],OP_FrontFace |
303 | xor eax,eax |
535 | xor eax,eax |
304 | cmp dword[mode],GL_CCW |
536 | cmp dword[mode],GL_CCW |
305 | je @f |
537 | je @f |
306 | inc eax |
538 | inc eax |
307 | @@: |
539 | @@: |
308 | mov dword[p+4],eax |
540 | mov dword[p+4],eax |
309 | 541 | ||
310 | lea eax,[ebp-8] ;=sizeof(dd)*2 |
542 | lea eax,[ebp-8] ;=sizeof(dd)*2 |
311 | stdcall gl_add_op,eax |
543 | stdcall gl_add_op,eax |
312 | ret |
544 | ret |
313 | endp |
545 | endp |
314 | 546 | ||
315 | align 4 |
547 | align 4 |
316 | glPolygonMode: ;face, mode |
548 | glPolygonMode: ;face, mode |
317 | ; assert(face == GL_BACK || |
549 | ; assert(face == GL_BACK || |
318 | ; face == GL_FRONT || |
550 | ; face == GL_FRONT || |
319 | ; face == GL_FRONT_AND_BACK); |
551 | ; face == GL_FRONT_AND_BACK); |
320 | ; assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL); |
552 | ; assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL); |
321 | push dword[esp] ;копируем адрес возврата |
553 | push dword[esp] ;копируем адрес возврата |
322 | push eax |
554 | push eax |
323 | lea eax,[esp+8] |
555 | lea eax,[esp+8] |
324 | mov dword[eax],OP_PolygonMode |
556 | mov dword[eax],OP_PolygonMode |
325 | stdcall gl_add_op,eax |
557 | stdcall gl_add_op,eax |
326 | pop eax |
558 | pop eax |
327 | ret 12 ;=sizeof(dd)*3 |
559 | ret 12 ;=sizeof(dd)*3 |
328 | 560 | ||
329 | ; glEnable / glDisable |
561 | ; glEnable / glDisable |
330 | 562 | ||
331 | align 4 |
563 | align 4 |
332 | proc glEnable uses eax, cap:dword |
564 | proc glEnable uses eax, cap:dword |
333 | locals |
565 | locals |
334 | p rd 3 |
566 | p rd 3 |
335 | endl |
567 | endl |
336 | mov dword[p],OP_EnableDisable |
568 | mov dword[p],OP_EnableDisable |
337 | mov eax,[cap] |
569 | mov eax,[cap] |
338 | mov dword[p+4],eax |
570 | mov dword[p+4],eax |
339 | mov dword[p+8],1 |
571 | mov dword[p+8],1 |
340 | 572 | ||
341 | lea eax,[ebp-12] ;=sizeof(dd)*3 |
573 | lea eax,[ebp-12] ;=sizeof(dd)*3 |
342 | stdcall gl_add_op,eax |
574 | stdcall gl_add_op,eax |
343 | ret |
575 | ret |
344 | endp |
576 | endp |
345 | 577 | ||
346 | align 4 |
578 | align 4 |
347 | proc glDisable uses eax, cap:dword |
579 | proc glDisable uses eax, cap:dword |
348 | locals |
580 | locals |
349 | p rd 3 |
581 | p rd 3 |
350 | endl |
582 | endl |
351 | mov dword[p],OP_EnableDisable |
583 | mov dword[p],OP_EnableDisable |
352 | mov eax,[cap] |
584 | mov eax,[cap] |
353 | mov dword[p+4],eax |
585 | mov dword[p+4],eax |
354 | mov dword[p+8],0 |
586 | mov dword[p+8],0 |
355 | 587 | ||
356 | lea eax,[ebp-12] ;=sizeof(dd)*3 |
588 | lea eax,[ebp-12] ;=sizeof(dd)*3 |
357 | stdcall gl_add_op,eax |
589 | stdcall gl_add_op,eax |
358 | ret |
590 | ret |
359 | endp |
591 | endp |
360 | 592 | ||
361 | ; glBegin / glEnd |
593 | ; glBegin / glEnd |
362 | 594 | ||
363 | align 4 |
595 | align 4 |
364 | glBegin: ;mode |
596 | glBegin: ;mode |
365 | push dword[esp] ;копируем адрес возврата |
597 | push dword[esp] ;копируем адрес возврата |
366 | push eax |
598 | push eax |
367 | lea eax,[esp+8] |
599 | lea eax,[esp+8] |
368 | mov dword[eax],OP_Begin |
600 | mov dword[eax],OP_Begin |
369 | stdcall gl_add_op,eax |
601 | stdcall gl_add_op,eax |
370 | pop eax |
602 | pop eax |
371 | ret 8 ;=sizeof(dd)*2 |
603 | ret 8 ;=sizeof(dd)*2 |
372 | 604 | ||
373 | align 4 |
605 | align 4 |
374 | glEnd: |
606 | glEnd: |
375 | stdcall gl_add_op,op_End |
607 | stdcall gl_add_op,op_End |
376 | ret |
608 | ret |
377 | 609 | ||
378 | ; matrix |
610 | ; matrix |
379 | 611 | ||
380 | align 4 |
612 | align 4 |
381 | glMatrixMode: ;mode |
613 | glMatrixMode: ;mode |
382 | push dword[esp] ;копируем адрес возврата |
614 | push dword[esp] ;копируем адрес возврата |
383 | push eax |
615 | push eax |
384 | lea eax,[esp+8] |
616 | lea eax,[esp+8] |
385 | mov dword[eax],OP_MatrixMode |
617 | mov dword[eax],OP_MatrixMode |
386 | stdcall gl_add_op,eax |
618 | stdcall gl_add_op,eax |
387 | pop eax |
619 | pop eax |
388 | ret 8 ;=sizeof(dd)*2 |
620 | ret 8 ;=sizeof(dd)*2 |
389 | 621 | ||
390 | align 4 |
622 | align 4 |
391 | proc glLoadMatrixf uses ecx edi esi, m:dword |
623 | proc glLoadMatrixf uses ecx edi esi, m:dword |
392 | locals |
624 | locals |
393 | p rd 17 |
625 | p rd 17 |
394 | endl |
626 | endl |
395 | mov dword[p],OP_LoadMatrix |
627 | mov dword[p],OP_LoadMatrix |
396 | mov ecx,16 |
628 | mov ecx,16 |
397 | mov esi,[m] |
629 | mov esi,[m] |
398 | mov edi,ebp |
630 | mov edi,ebp |
399 | sub edi,64 ;=sizeof(M4) |
631 | sub edi,64 ;=sizeof(M4) |
400 | rep movsd |
632 | rep movsd |
401 | 633 | ||
402 | lea ecx,[ebp-68] ;=sizeof(dd)*17 |
634 | lea ecx,[ebp-68] ;=sizeof(dd)*17 |
403 | stdcall gl_add_op,ecx |
635 | stdcall gl_add_op,ecx |
404 | ret |
636 | ret |
405 | endp |
637 | endp |
406 | 638 | ||
407 | align 4 |
639 | align 4 |
408 | glLoadIdentity: |
640 | glLoadIdentity: |
409 | stdcall gl_add_op,op_LoadIdentity |
641 | stdcall gl_add_op,op_LoadIdentity |
410 | ret |
642 | ret |
411 | 643 | ||
412 | align 4 |
644 | align 4 |
413 | proc glMultMatrixf uses ecx edi esi, m:dword |
645 | proc glMultMatrixf uses ecx edi esi, m:dword |
414 | locals |
646 | locals |
415 | p rd 17 |
647 | p rd 17 |
416 | endl |
648 | endl |
417 | mov dword[p],OP_MultMatrix |
649 | mov dword[p],OP_MultMatrix |
418 | mov ecx,16 |
650 | mov ecx,16 |
419 | mov esi,[m] |
651 | mov esi,[m] |
420 | mov edi,ebp |
652 | mov edi,ebp |
421 | sub edi,64 ;=sizeof(M4) |
653 | sub edi,64 ;=sizeof(M4) |
422 | rep movsd |
654 | rep movsd |
423 | 655 | ||
424 | lea ecx,[ebp-68] ;=sizeof(dd)*17 |
656 | lea ecx,[ebp-68] ;=sizeof(dd)*17 |
425 | stdcall gl_add_op,ecx |
657 | stdcall gl_add_op,ecx |
426 | ret |
658 | ret |
427 | endp |
659 | endp |
428 | 660 | ||
429 | align 4 |
661 | align 4 |
430 | glPushMatrix: |
662 | glPushMatrix: |
431 | stdcall gl_add_op,op_PushMatrix |
663 | stdcall gl_add_op,op_PushMatrix |
432 | ret |
664 | ret |
433 | 665 | ||
434 | align 4 |
666 | align 4 |
435 | glPopMatrix: |
667 | glPopMatrix: |
436 | stdcall gl_add_op,op_PopMatrix |
668 | stdcall gl_add_op,op_PopMatrix |
437 | ret |
669 | ret |
438 | 670 | ||
439 | align 4 |
671 | align 4 |
440 | glRotatef: ;angle, x, y, z |
672 | glRotatef: ;angle, x, y, z |
441 | push dword[esp] ;копируем адрес возврата |
673 | push dword[esp] ;копируем адрес возврата |
442 | push eax |
674 | push eax |
443 | lea eax,[esp+8] |
675 | lea eax,[esp+8] |
444 | mov dword[eax],OP_Rotate |
676 | mov dword[eax],OP_Rotate |
445 | stdcall gl_add_op,eax |
677 | stdcall gl_add_op,eax |
446 | pop eax |
678 | pop eax |
447 | ret 20 ;=sizeof(dd)*5 |
679 | ret 20 ;=sizeof(dd)*5 |
448 | 680 | ||
449 | align 4 |
681 | align 4 |
450 | glTranslatef: ;x, y, z |
682 | glTranslatef: ;x, y, z |
451 | push dword[esp] ;копируем адрес возврата |
683 | push dword[esp] ;копируем адрес возврата |
452 | push eax |
684 | push eax |
453 | lea eax,[esp+8] |
685 | lea eax,[esp+8] |
454 | mov dword[eax],OP_Translate |
686 | mov dword[eax],OP_Translate |
455 | stdcall gl_add_op,eax |
687 | stdcall gl_add_op,eax |
456 | pop eax |
688 | pop eax |
457 | ret 16 ;=sizeof(dd)*4 |
689 | ret 16 ;=sizeof(dd)*4 |
458 | 690 | ||
459 | align 4 |
691 | align 4 |
460 | glScalef: ;x, y, z |
692 | glScalef: ;x, y, z |
461 | push dword[esp] ;копируем адрес возврата |
693 | push dword[esp] ;копируем адрес возврата |
462 | push eax |
694 | push eax |
463 | lea eax,[esp+8] |
695 | lea eax,[esp+8] |
464 | mov dword[eax],OP_Scale |
696 | mov dword[eax],OP_Scale |
465 | stdcall gl_add_op,eax |
697 | stdcall gl_add_op,eax |
466 | pop eax |
698 | pop eax |
467 | ret 16 ;=sizeof(dd)*4 |
699 | ret 16 ;=sizeof(dd)*4 |
468 | 700 | ||
469 | align 4 |
701 | align 4 |
470 | glViewport: ;x, y, width, heigh |
702 | glViewport: ;x, y, width, heigh |
471 | push dword[esp] ;копируем адрес возврата |
703 | push dword[esp] ;копируем адрес возврата |
472 | push eax |
704 | push eax |
473 | lea eax,[esp+8] |
705 | lea eax,[esp+8] |
474 | mov dword[eax],OP_Viewport |
706 | mov dword[eax],OP_Viewport |
475 | stdcall gl_add_op,eax |
707 | stdcall gl_add_op,eax |
476 | pop eax |
708 | pop eax |
477 | ret 20 ;=sizeof(dd)*5 |
709 | ret 20 ;=sizeof(dd)*5 |
478 | 710 | ||
479 | align 4 |
711 | align 4 |
480 | proc glFrustum uses eax, left:qword, right:qword, bottom:qword, top:qword,\ |
712 | proc glFrustum uses eax, left:qword, right:qword, bottom:qword, top:qword,\ |
481 | near:qword, farv:qword |
713 | near:qword, farv:qword |
482 | locals |
714 | locals |
483 | p rd 7 |
715 | p rd 7 |
484 | endl |
716 | endl |
485 | mov dword[p],OP_Frustum |
717 | mov dword[p],OP_Frustum |
486 | fld qword[left] |
718 | fld qword[left] |
487 | fstp dword[p+4] |
719 | fstp dword[p+4] |
488 | fld qword[right] |
720 | fld qword[right] |
489 | fstp dword[p+8] |
721 | fstp dword[p+8] |
490 | fld qword[bottom] |
722 | fld qword[bottom] |
491 | fstp dword[p+12] |
723 | fstp dword[p+12] |
492 | fld qword[top] |
724 | fld qword[top] |
493 | fstp dword[p+16] |
725 | fstp dword[p+16] |
494 | fld qword[near] |
726 | fld qword[near] |
495 | fstp dword[p+20] |
727 | fstp dword[p+20] |
496 | fld qword[farv] |
728 | fld qword[farv] |
497 | fstp dword[p+24] |
729 | fstp dword[p+24] |
498 | 730 | ||
499 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
731 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
500 | stdcall gl_add_op,eax |
732 | stdcall gl_add_op,eax |
501 | ret |
733 | ret |
502 | endp |
734 | endp |
503 | 735 | ||
504 | align 4 |
736 | align 4 |
505 | proc glOrtho uses eax, left:qword, right:qword, bottom:qword, top:qword,\ |
737 | proc glOrtho uses eax, left:qword, right:qword, bottom:qword, top:qword,\ |
506 | near:qword, farv:qword |
738 | near:qword, farv:qword |
507 | locals |
739 | locals |
508 | p rd 7 |
740 | p rd 7 |
509 | endl |
741 | endl |
510 | mov dword[p],OP_Ortho |
742 | mov dword[p],OP_Ortho |
511 | fld qword[left] |
743 | fld qword[left] |
512 | fstp dword[p+4] |
744 | fstp dword[p+4] |
513 | fld qword[right] |
745 | fld qword[right] |
514 | fstp dword[p+8] |
746 | fstp dword[p+8] |
515 | fld qword[bottom] |
747 | fld qword[bottom] |
516 | fstp dword[p+12] |
748 | fstp dword[p+12] |
517 | fld qword[top] |
749 | fld qword[top] |
518 | fstp dword[p+16] |
750 | fstp dword[p+16] |
519 | fld qword[near] |
751 | fld qword[near] |
520 | fstp dword[p+20] |
752 | fstp dword[p+20] |
521 | fld qword[farv] |
753 | fld qword[farv] |
522 | fstp dword[p+24] |
754 | fstp dword[p+24] |
523 | 755 | ||
524 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
756 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
525 | stdcall gl_add_op,eax |
757 | stdcall gl_add_op,eax |
526 | ret |
758 | ret |
527 | endp |
759 | endp |
528 | 760 | ||
529 | ; lightening |
761 | ; lightening |
530 | 762 | ||
531 | align 4 |
763 | align 4 |
532 | proc glMaterialfv uses eax ecx, mode:dword, type:dword, v:dword |
764 | proc glMaterialfv uses eax ecx, mode:dword, type:dword, v:dword |
533 | locals |
765 | locals |
534 | p rd 7 |
766 | p rd 7 |
535 | endl |
767 | endl |
536 | 768 | ||
537 | ; assert(mode == GL_FRONT || mode == GL_BACK || mode==GL_FRONT_AND_BACK); |
769 | ; assert(mode == GL_FRONT || mode == GL_BACK || mode==GL_FRONT_AND_BACK); |
538 | 770 | ||
539 | mov dword[p],OP_Material |
771 | mov dword[p],OP_Material |
540 | mov eax,[mode] |
772 | mov eax,[mode] |
541 | mov dword[p+4],eax |
773 | mov dword[p+4],eax |
542 | mov eax,[type] |
774 | mov eax,[type] |
543 | mov dword[p+8],eax |
775 | mov dword[p+8],eax |
544 | 776 | ||
545 | mov eax,[v] |
777 | mov eax,[v] |
546 | mov ecx,[eax+8] |
778 | mov ecx,[eax+8] |
547 | mov dword[p+12],ecx |
779 | mov dword[p+12],ecx |
548 | mov ecx,[eax+4] |
780 | mov ecx,[eax+4] |
549 | mov dword[p+16],ecx |
781 | mov dword[p+16],ecx |
550 | mov ecx,[eax] |
782 | mov ecx,[eax] |
551 | mov dword[p+20],ecx |
783 | mov dword[p+20],ecx |
552 | mov ecx,[eax+12] |
784 | mov ecx,[eax+12] |
553 | mov dword[p+24],ecx |
785 | mov dword[p+24],ecx |
554 | 786 | ||
555 | cmp dword[type],GL_SHININESS |
787 | cmp dword[type],GL_SHININESS |
556 | jne @f |
788 | jne @f |
557 | mov dword[p+16],0.0 |
789 | mov dword[p+16],0.0 |
558 | mov dword[p+20],0.0 |
790 | mov dword[p+20],0.0 |
559 | mov dword[p+24],0.0 |
791 | mov dword[p+24],0.0 |
560 | @@: |
792 | @@: |
561 | 793 | ||
562 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
794 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
563 | stdcall gl_add_op,eax |
795 | stdcall gl_add_op,eax |
564 | ret |
796 | ret |
565 | endp |
797 | endp |
566 | 798 | ||
567 | align 4 |
799 | align 4 |
568 | proc glMaterialf uses eax, mode:dword, type:dword, v:dword |
800 | proc glMaterialf uses eax, mode:dword, type:dword, v:dword |
569 | locals |
801 | locals |
570 | p rd 7 |
802 | p rd 7 |
571 | endl |
803 | endl |
572 | mov dword[p],OP_Material |
804 | mov dword[p],OP_Material |
573 | mov eax,[mode] |
805 | mov eax,[mode] |
574 | mov dword[p+4],eax |
806 | mov dword[p+4],eax |
575 | mov eax,[type] |
807 | mov eax,[type] |
576 | mov dword[p+8],eax |
808 | mov dword[p+8],eax |
577 | mov eax,[v] |
809 | mov eax,[v] |
578 | mov dword[p+12],eax |
810 | mov dword[p+12],eax |
579 | mov dword[p+16],0.0 |
811 | mov dword[p+16],0.0 |
580 | mov dword[p+20],0.0 |
812 | mov dword[p+20],0.0 |
581 | mov dword[p+24],0.0 |
813 | mov dword[p+24],0.0 |
582 | 814 | ||
583 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
815 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
584 | stdcall gl_add_op,eax |
816 | stdcall gl_add_op,eax |
585 | ret |
817 | ret |
586 | endp |
818 | endp |
587 | 819 | ||
588 | align 4 |
820 | align 4 |
589 | glColorMaterial: ;mode, type |
821 | glColorMaterial: ;mode, type |
590 | push dword[esp] ;копируем адрес возврата |
822 | push dword[esp] ;копируем адрес возврата |
591 | push eax |
823 | push eax |
592 | lea eax,[esp+8] |
824 | lea eax,[esp+8] |
593 | mov dword[eax],OP_ColorMaterial |
825 | mov dword[eax],OP_ColorMaterial |
594 | stdcall gl_add_op,eax |
826 | stdcall gl_add_op,eax |
595 | pop eax |
827 | pop eax |
596 | ret 12 ;=sizeof(dd)*3 |
828 | ret 12 ;=sizeof(dd)*3 |
597 | 829 | ||
598 | align 4 |
830 | align 4 |
599 | proc glLightfv uses eax ecx, light:dword, type:dword, v:dword |
831 | proc glLightfv uses eax ecx, light:dword, type:dword, v:dword |
600 | locals |
832 | locals |
601 | p rd 7 |
833 | p rd 7 |
602 | endl |
834 | endl |
603 | mov dword[p],OP_Light |
835 | mov dword[p],OP_Light |
604 | mov eax,[light] |
836 | mov eax,[light] |
605 | mov dword[p+4],eax |
837 | mov dword[p+4],eax |
606 | mov eax,[type] |
838 | mov eax,[type] |
607 | mov dword[p+8],eax |
839 | mov dword[p+8],eax |
608 | 840 | ||
609 | ;TODO: 3 composants ? |
841 | ;TODO: 3 composants ? |
610 | mov eax,[v] |
842 | mov eax,[v] |
611 | mov ecx,[eax] |
843 | mov ecx,[eax] |
612 | mov dword[p+12],ecx |
844 | mov dword[p+12],ecx |
613 | mov ecx,[eax+4] |
845 | mov ecx,[eax+4] |
614 | mov dword[p+16],ecx |
846 | mov dword[p+16],ecx |
615 | mov ecx,[eax+8] |
847 | mov ecx,[eax+8] |
616 | mov dword[p+20],ecx |
848 | mov dword[p+20],ecx |
617 | mov ecx,[eax+12] |
849 | mov ecx,[eax+12] |
618 | mov dword[p+24],ecx |
850 | mov dword[p+24],ecx |
619 | 851 | ||
620 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
852 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
621 | stdcall gl_add_op,eax |
853 | stdcall gl_add_op,eax |
622 | ret |
854 | ret |
623 | endp |
855 | endp |
624 | 856 | ||
625 | align 4 |
857 | align 4 |
626 | proc glLightf uses eax, light:dword, type:dword, v:dword |
858 | proc glLightf uses eax, light:dword, type:dword, v:dword |
627 | locals |
859 | locals |
628 | p rd 7 |
860 | p rd 7 |
629 | endl |
861 | endl |
630 | mov dword[p],OP_Light |
862 | mov dword[p],OP_Light |
631 | mov eax,[light] |
863 | mov eax,[light] |
632 | mov dword[p+4],eax |
864 | mov dword[p+4],eax |
633 | mov eax,[type] |
865 | mov eax,[type] |
634 | mov dword[p+8],eax |
866 | mov dword[p+8],eax |
635 | mov eax,[v] |
867 | mov eax,[v] |
636 | mov dword[p+12],eax |
868 | mov dword[p+12],eax |
637 | mov dword[p+16],0.0 |
869 | mov dword[p+16],0.0 |
638 | mov dword[p+20],0.0 |
870 | mov dword[p+20],0.0 |
639 | mov dword[p+24],0.0 |
871 | mov dword[p+24],0.0 |
640 | 872 | ||
641 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
873 | lea eax,[ebp-28] ;=sizeof(dd)*7 |
642 | stdcall gl_add_op,eax |
874 | stdcall gl_add_op,eax |
643 | ret |
875 | ret |
644 | endp |
876 | endp |
645 | 877 | ||
646 | align 4 |
878 | align 4 |
647 | proc glLightModeli uses eax, pname:dword, param:dword |
879 | proc glLightModeli uses eax, pname:dword, param:dword |
648 | locals |
880 | locals |
649 | p rd 6 |
881 | p rd 6 |
650 | endl |
882 | endl |
651 | mov dword[p],OP_LightModel |
883 | mov dword[p],OP_LightModel |
652 | mov eax,[pname] |
884 | mov eax,[pname] |
653 | mov dword[p+4],eax |
885 | mov dword[p+4],eax |
654 | fild dword[param] |
886 | fild dword[param] |
655 | fstp dword[p+8] ;преобразовали int во float |
887 | fstp dword[p+8] ;преобразовали int во float |
656 | 888 | ||
657 | mov dword[p+12],0.0 |
889 | mov dword[p+12],0.0 |
658 | mov dword[p+16],0.0 |
890 | mov dword[p+16],0.0 |
659 | mov dword[p+20],0.0 |
891 | mov dword[p+20],0.0 |
660 | 892 | ||
661 | lea eax,[ebp-24] ;=sizeof(dd)*6 |
893 | lea eax,[ebp-24] ;=sizeof(dd)*6 |
662 | stdcall gl_add_op,eax |
894 | stdcall gl_add_op,eax |
663 | ret |
895 | ret |
664 | endp |
896 | endp |
665 | 897 | ||
666 | align 4 |
898 | align 4 |
667 | proc glLightModelfv uses eax ecx, pname:dword, param:dword |
899 | proc glLightModelfv uses eax ecx, pname:dword, param:dword |
668 | locals |
900 | locals |
669 | p rd 6 |
901 | p rd 6 |
670 | endl |
902 | endl |
671 | mov dword[p],OP_LightModel |
903 | mov dword[p],OP_LightModel |
672 | mov eax,[pname] |
904 | mov eax,[pname] |
673 | mov dword[p+4],eax |
905 | mov dword[p+4],eax |
674 | mov eax,[param] |
906 | mov eax,[param] |
675 | mov ecx,[eax] |
907 | mov ecx,[eax] |
676 | mov dword[p+8],ecx |
908 | mov dword[p+8],ecx |
677 | mov ecx,[eax+4] |
909 | mov ecx,[eax+4] |
678 | mov dword[p+12],ecx |
910 | mov dword[p+12],ecx |
679 | mov ecx,[eax+8] |
911 | mov ecx,[eax+8] |
680 | mov dword[p+16],ecx |
912 | mov dword[p+16],ecx |
681 | mov ecx,[eax+12] |
913 | mov ecx,[eax+12] |
682 | mov dword[p+20],ecx |
914 | mov dword[p+20],ecx |
683 | 915 | ||
684 | lea eax,[ebp-24] ;=sizeof(dd)*6 |
916 | lea eax,[ebp-24] ;=sizeof(dd)*6 |
685 | stdcall gl_add_op,eax |
917 | stdcall gl_add_op,eax |
686 | ret |
918 | ret |
687 | endp |
919 | endp |
688 | 920 | ||
689 | ; clear |
921 | ; clear |
690 | 922 | ||
691 | align 4 |
923 | align 4 |
692 | glClear: ;mask |
924 | glClear: ;mask |
693 | push dword[esp] ;копируем адрес возврата |
925 | push dword[esp] ;копируем адрес возврата |
694 | push eax |
926 | push eax |
695 | lea eax,[esp+8] |
927 | lea eax,[esp+8] |
696 | mov dword[eax],OP_Clear |
928 | mov dword[eax],OP_Clear |
697 | stdcall gl_add_op,eax |
929 | stdcall gl_add_op,eax |
698 | pop eax |
930 | pop eax |
699 | ret 8 ;=sizeof(dd)*2 |
931 | ret 8 ;=sizeof(dd)*2 |
700 | 932 | ||
701 | align 4 |
933 | align 4 |
702 | proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword |
934 | proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword |
703 | locals |
935 | locals |
704 | p rd 5 |
936 | p rd 5 |
705 | endl |
937 | endl |
706 | mov dword[p],OP_ClearColor |
938 | mov dword[p],OP_ClearColor |
707 | mov eax,[b] |
939 | mov eax,[b] |
708 | mov dword[p+4],eax |
940 | mov dword[p+4],eax |
709 | mov eax,[g] |
941 | mov eax,[g] |
710 | mov dword[p+8],eax |
942 | mov dword[p+8],eax |
711 | mov eax,[r] |
943 | mov eax,[r] |
712 | mov dword[p+12],eax |
944 | mov dword[p+12],eax |
713 | mov eax,[a] |
945 | mov eax,[a] |
714 | mov dword[p+16],eax |
946 | mov dword[p+16],eax |
715 | 947 | ||
716 | lea eax,[ebp-20] ;=sizeof(dd)*5 |
948 | lea eax,[ebp-20] ;=sizeof(dd)*5 |
717 | stdcall gl_add_op,eax |
949 | stdcall gl_add_op,eax |
718 | ret |
950 | ret |
719 | endp |
951 | endp |
720 | 952 | ||
721 | align 4 |
953 | align 4 |
722 | proc glClearDepth uses eax, depth:dword |
954 | proc glClearDepth uses eax, depth:dword |
723 | locals |
955 | locals |
724 | p rd 2 |
956 | p rd 2 |
725 | endl |
957 | endl |
726 | mov dword[p],OP_ClearDepth |
958 | mov dword[p],OP_ClearDepth |
727 | mov eax,[depth] |
959 | mov eax,[depth] |
728 | fld qword[eax] |
960 | fld qword[eax] |
729 | fstp dword[p+4] |
961 | fstp dword[p+4] |
730 | 962 | ||
731 | lea eax,[ebp-8] ;=sizeof(dd)*2 |
963 | lea eax,[ebp-8] ;=sizeof(dd)*2 |
732 | stdcall gl_add_op,eax |
964 | stdcall gl_add_op,eax |
733 | ret |
965 | ret |
734 | endp |
966 | endp |
735 | 967 | ||
736 | ; textures |
968 | ; textures |
737 | 969 | ||
738 | align 4 |
970 | align 4 |
739 | glTexImage2D: ;target, level, components, width, height, border, format, type, pixels |
971 | glTexImage2D: ;target, level, components, width, height, border, format, type, pixels |
740 | push dword[esp] ;копируем адрес возврата |
972 | push dword[esp] ;копируем адрес возврата |
741 | push eax |
973 | push eax |
742 | lea eax,[esp+8] |
974 | lea eax,[esp+8] |
743 | mov dword[eax],OP_TexImage2D |
975 | mov dword[eax],OP_TexImage2D |
744 | stdcall gl_add_op,eax |
976 | stdcall gl_add_op,eax |
745 | pop eax |
977 | pop eax |
746 | ret 40 ;=sizeof(dd)*10 |
978 | ret 40 ;=sizeof(dd)*10 |
747 | 979 | ||
748 | align 4 |
980 | align 4 |
749 | glBindTexture: ;target, texture |
981 | glBindTexture: ;target, texture |
750 | push dword[esp] ;копируем адрес возврата |
982 | push dword[esp] ;копируем адрес возврата |
751 | push eax |
983 | push eax |
752 | lea eax,[esp+8] |
984 | lea eax,[esp+8] |
753 | mov dword[eax],OP_BindTexture |
985 | mov dword[eax],OP_BindTexture |
754 | stdcall gl_add_op,eax |
986 | stdcall gl_add_op,eax |
755 | pop eax |
987 | pop eax |
756 | ret 12 ;=sizeof(dd)*3 |
988 | ret 12 ;=sizeof(dd)*3 |
757 | 989 | ||
758 | align 4 |
990 | align 4 |
759 | proc glTexEnvi uses eax, target:dword, pname:dword, param:dword |
991 | proc glTexEnvi uses eax, target:dword, pname:dword, param:dword |
760 | locals |
992 | locals |
761 | p rd 8 |
993 | p rd 8 |
762 | endl |
994 | endl |
763 | mov dword[p],OP_TexEnv |
995 | mov dword[p],OP_TexEnv |
764 | mov eax,[target] |
996 | mov eax,[target] |
765 | mov dword[p+4],eax |
997 | mov dword[p+4],eax |
766 | mov eax,[pname] |
998 | mov eax,[pname] |
767 | mov dword[p+8],eax |
999 | mov dword[p+8],eax |
768 | mov eax,[param] |
1000 | mov eax,[param] |
769 | mov dword[p+12],eax |
1001 | mov dword[p+12],eax |
770 | mov dword[p+16],0.0 |
1002 | mov dword[p+16],0.0 |
771 | mov dword[p+20],0.0 |
1003 | mov dword[p+20],0.0 |
772 | mov dword[p+24],0.0 |
1004 | mov dword[p+24],0.0 |
773 | mov dword[p+28],0.0 |
1005 | mov dword[p+28],0.0 |
774 | 1006 | ||
775 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
1007 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
776 | stdcall gl_add_op,eax |
1008 | stdcall gl_add_op,eax |
777 | ret |
1009 | ret |
778 | endp |
1010 | endp |
779 | 1011 | ||
780 | align 4 |
1012 | align 4 |
781 | proc glTexParameteri uses eax, target:dword, pname:dword, param:dword |
1013 | proc glTexParameteri uses eax, target:dword, pname:dword, param:dword |
782 | locals |
1014 | locals |
783 | p rd 8 |
1015 | p rd 8 |
784 | endl |
1016 | endl |
785 | mov dword[p],OP_TexParameter |
1017 | mov dword[p],OP_TexParameter |
786 | mov eax,[target] |
1018 | mov eax,[target] |
787 | mov dword[p+4],eax |
1019 | mov dword[p+4],eax |
788 | mov eax,[pname] |
1020 | mov eax,[pname] |
789 | mov dword[p+8],eax |
1021 | mov dword[p+8],eax |
790 | mov eax,[param] |
1022 | mov eax,[param] |
791 | mov dword[p+12],eax |
1023 | mov dword[p+12],eax |
792 | mov dword[p+16],0.0 |
1024 | mov dword[p+16],0.0 |
793 | mov dword[p+20],0.0 |
1025 | mov dword[p+20],0.0 |
794 | mov dword[p+24],0.0 |
1026 | mov dword[p+24],0.0 |
795 | mov dword[p+28],0.0 |
1027 | mov dword[p+28],0.0 |
796 | 1028 | ||
797 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
1029 | lea eax,[ebp-32] ;=sizeof(dd)*8 |
798 | stdcall gl_add_op,eax |
1030 | stdcall gl_add_op,eax |
799 | ret |
1031 | ret |
800 | endp |
1032 | endp |
801 | 1033 | ||
802 | align 4 |
1034 | align 4 |
803 | glPixelStorei: ;pname, param |
1035 | glPixelStorei: ;pname, param |
804 | push dword[esp] ;копируем адрес возврата |
1036 | push dword[esp] ;копируем адрес возврата |
805 | push eax |
1037 | push eax |
806 | lea eax,[esp+8] |
1038 | lea eax,[esp+8] |
807 | mov dword[eax],OP_PixelStore |
1039 | mov dword[eax],OP_PixelStore |
808 | stdcall gl_add_op,eax |
1040 | stdcall gl_add_op,eax |
809 | pop eax |
1041 | pop eax |
810 | ret 12 ;=sizeof(dd)*3 |
1042 | ret 12 ;=sizeof(dd)*3 |
811 | 1043 | ||
812 | ; selection |
1044 | ; selection |
813 | 1045 | ||
814 | align 4 |
1046 | align 4 |
815 | glInitNames: |
1047 | glInitNames: |
816 | stdcall gl_add_op,op_InitNames |
1048 | stdcall gl_add_op,op_InitNames |
817 | ret |
1049 | ret |
818 | 1050 | ||
819 | align 4 |
1051 | align 4 |
820 | glPushName: ;name |
1052 | glPushName: ;name |
821 | push dword[esp] ;копируем адрес возврата |
1053 | push dword[esp] ;копируем адрес возврата |
822 | push eax |
1054 | push eax |
823 | lea eax,[esp+8] |
1055 | lea eax,[esp+8] |
824 | mov dword[eax],OP_PushName |
1056 | mov dword[eax],OP_PushName |
825 | stdcall gl_add_op,eax |
1057 | stdcall gl_add_op,eax |
826 | pop eax |
1058 | pop eax |
827 | ret 8 ;=sizeof(dd)*2 |
1059 | ret 8 ;=sizeof(dd)*2 |
828 | 1060 | ||
829 | align 4 |
1061 | align 4 |
830 | glPopName: |
1062 | glPopName: |
831 | stdcall gl_add_op,op_PopName |
1063 | stdcall gl_add_op,op_PopName |
832 | ret |
1064 | ret |
833 | 1065 | ||
834 | align 4 |
1066 | align 4 |
835 | glLoadName: ;name |
1067 | glLoadName: ;name |
836 | push dword[esp] ;копируем адрес возврата |
1068 | push dword[esp] ;копируем адрес возврата |
837 | push eax |
1069 | push eax |
838 | lea eax,[esp+8] |
1070 | lea eax,[esp+8] |
839 | mov dword[eax],OP_LoadName |
1071 | mov dword[eax],OP_LoadName |
840 | stdcall gl_add_op,eax |
1072 | stdcall gl_add_op,eax |
841 | pop eax |
1073 | pop eax |
842 | ret 8 ;=sizeof(dd)*2 |
1074 | ret 8 ;=sizeof(dd)*2 |
843 | 1075 | ||
844 | align 4 |
1076 | align 4 |
845 | glPolygonOffset: ;factor, units |
1077 | glPolygonOffset: ;factor, units |
846 | push dword[esp] ;копируем адрес возврата |
1078 | push dword[esp] ;копируем адрес возврата |
847 | push eax |
1079 | push eax |
848 | lea eax,[esp+8] |
1080 | lea eax,[esp+8] |
849 | mov dword[eax],OP_PolygonOffset |
1081 | mov dword[eax],OP_PolygonOffset |
850 | stdcall gl_add_op,eax |
1082 | stdcall gl_add_op,eax |
851 | pop eax |
1083 | pop eax |
852 | ret 12 ;=sizeof(dd)*3 |
1084 | ret 12 ;=sizeof(dd)*3 |
853 | 1085 | ||
854 | ; Special Functions |
1086 | ; Special Functions |
855 | 1087 | ||
856 | align 4 |
1088 | align 4 |
857 | glCallList: ;list |
1089 | glCallList: ;list |
858 | push dword[esp] ;копируем адрес возврата |
1090 | push dword[esp] ;копируем адрес возврата |
859 | push eax |
1091 | push eax |
860 | lea eax,[esp+8] |
1092 | lea eax,[esp+8] |
861 | mov dword[eax],OP_CallList |
1093 | mov dword[eax],OP_CallList |
862 | stdcall gl_add_op,eax |
1094 | stdcall gl_add_op,eax |
863 | pop eax |
1095 | pop eax |
864 | ret 8 ;=sizeof(dd)*2 |
1096 | ret 8 ;=sizeof(dd)*2 |
865 | 1097 | ||
866 | align 4 |
1098 | align 4 |
867 | proc glFlush ;(void) |
1099 | proc glFlush ;(void) |
868 | ;nothing to do |
1100 | ;nothing to do |
869 | ret |
1101 | ret |
870 | endp |
1102 | endp |
871 | 1103 | ||
872 | align 4 |
1104 | align 4 |
873 | glHint: ;target, mode |
1105 | glHint: ;target, mode |
874 | push dword[esp] ;копируем адрес возврата |
1106 | push dword[esp] ;копируем адрес возврата |
875 | push eax |
1107 | push eax |
876 | lea eax,[esp+8] |
1108 | lea eax,[esp+8] |
877 | mov dword[eax],OP_Hint |
1109 | mov dword[eax],OP_Hint |
878 | stdcall gl_add_op,eax |
1110 | stdcall gl_add_op,eax |
879 | pop eax |
1111 | pop eax |
880 | ret 12 ;=sizeof(dd)*3 |
1112 | ret 12 ;=sizeof(dd)*3 |
881 | 1113 | ||
882 | ; Non standard functions |
1114 | ; Non standard functions |
883 | 1115 | ||
884 | align 4 |
1116 | align 4 |
885 | proc glDebug uses eax, mode:dword |
1117 | proc glDebug uses eax, mode:dword |
886 | stdcall gl_get_context ;после вызова функции в eax указатель на GLContext |
1118 | call gl_get_context ;после вызова функции в eax указатель на GLContext |
887 | push dword[mode] |
1119 | push dword[mode] |
888 | pop dword[eax+GLContext.print_flag] |
1120 | pop dword[eax+GLContext.print_flag] |
889 | ret |
1121 | ret |
890 | endp |
1122 | endp |