Subversion Repositories Kolibri OS

Rev

Rev 8062 | Rev 8408 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5153 IgorA 1
; glVertex
2
 
3
align 4
8063 IgorA 4
glVertex4f: ;x, y, z, w
5
	push dword[esp] ;копируем адрес возврата
6
	push eax
7
	lea eax,[esp+8]
8
	mov dword[eax],OP_Vertex
5153 IgorA 9
	stdcall gl_add_op,eax
8063 IgorA 10
	pop eax
11
	ret 20 ;=sizeof(dd)*5
5153 IgorA 12
 
13
align 4
14
proc glVertex2f, x:dword, y:dword
15
	stdcall glVertex4f,[x],[y],0.0,1.0
16
	ret
17
endp
18
 
19
align 4
5353 IgorA 20
proc glVertex2fv uses eax, v:dword
21
	mov eax,[v]
22
	stdcall glVertex4f,[eax],[eax+4],0.0,1.0
23
	ret
24
endp
25
 
26
align 4
5153 IgorA 27
proc glVertex3f, x:dword, y:dword, z:dword
28
	stdcall glVertex4f,[x],[y],[z],1.0
29
	ret
30
endp
31
 
32
align 4
33
proc glVertex3fv uses eax, v:dword
34
	mov eax,[v]
35
	stdcall glVertex4f,[eax],[eax+4],[eax+8],1.0
36
	ret
37
endp
38
 
5353 IgorA 39
align 4
40
proc glVertex4fv uses eax, v:dword
41
	mov eax,[v]
42
	stdcall glVertex4f,[eax],[eax+4],[eax+8],[eax+12]
43
	ret
44
endp
45
 
5153 IgorA 46
; glNormal
47
 
48
align 4
8063 IgorA 49
glNormal3f: ;x, y, z
50
	push dword[esp] ;копируем адрес возврата
51
	push eax
52
	lea eax,[esp+8]
53
	mov dword[eax],OP_Normal
5153 IgorA 54
	stdcall gl_add_op,eax
8063 IgorA 55
	pop eax
56
	ret 16 ;=sizeof(dd)*4
5153 IgorA 57
 
58
align 4
59
proc glNormal3fv uses eax, v:dword
60
	mov eax,[v]
61
	stdcall glNormal3f,[eax],[eax+4],[eax+8]
62
	ret
63
endp
64
 
65
; glColor
66
 
67
align 4
68
proc glColor4f uses eax, r:dword, g:dword, b:dword, a:dword
69
locals
70
	p rd 8
71
endl
72
	mov dword[p],OP_Color
73
	mov eax,[b]
74
	mov dword[p+4],eax
75
	mov eax,[g]
76
	mov dword[p+8],eax
77
	mov eax,[r]
78
	mov dword[p+12],eax
79
	mov eax,[a]
80
	mov dword[p+16],eax
81
	; direct convertion to integer to go faster if no shading
8063 IgorA 82
	lea eax,[ebp-12] ;ebp-12 = &p[5]
5153 IgorA 83
	push eax
84
	add eax,4 ;ebp-8 = &p[6]
85
	push eax
86
	add eax,4 ;ebp-4 = &p[7]
87
	push eax
88
	stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5]
89
 
8063 IgorA 90
	lea eax,[ebp-32] ;=sizeof(dd)*8
5153 IgorA 91
	stdcall gl_add_op,eax
92
	ret
93
endp
94
 
95
align 4
96
proc glColor4fv uses eax ebx, v:dword
97
	mov eax,[v]
5418 IgorA 98
	stdcall glColor4f,[eax],[eax+4],[eax+8],[eax+12],1.0
5153 IgorA 99
	ret
100
endp
101
 
102
align 4
103
proc glColor3f, r:dword, g:dword, b:dword
104
	stdcall glColor4f,[r],[g],[b],1.0
105
	ret
106
endp
107
 
108
align 4
109
proc glColor3fv uses eax, v:dword
110
	mov eax,[v]
111
	stdcall glColor4f,[eax],[eax+4],[eax+8],1.0
112
	ret
113
endp
114
 
5387 IgorA 115
align 4
116
fl_255 dd 255.0
117
 
118
align 4
119
proc glColor3ub uses eax, r:dword, g:dword, b:dword
120
	push dword 1.0
121
	fld dword[fl_255]
122
 
123
	movzx eax,byte[b]
124
	mov dword[esp-4],eax
125
	fild dword[esp-4]
126
	fdiv st0,st1
127
	fstp dword[esp-4] ;преобразовали int во float
128
	movzx eax,byte[g]
129
	mov dword[esp-8],eax
130
	fild dword[esp-8]
131
	fdiv st0,st1
132
	fstp dword[esp-8]
133
	movzx eax,byte[r]
134
	mov dword[esp-12],eax
135
	fild dword[esp-12]
136
	fdiv st0,st1
137
	fstp dword[esp-12]
138
 
139
	ffree st0
140
	fincstp
141
	sub esp,12
142
	call glColor4f
143
	ret
144
endp
145
 
5153 IgorA 146
; TexCoord
147
 
148
align 4
8063 IgorA 149
glTexCoord4f: ;s, t, r, q
150
	push dword[esp] ;копируем адрес возврата
151
	push eax
152
	lea eax,[esp+8]
153
	mov dword[eax],OP_TexCoord
5153 IgorA 154
	stdcall gl_add_op,eax
8063 IgorA 155
	pop eax
156
	ret 20 ;=sizeof(dd)*5
5153 IgorA 157
 
158
align 4
159
proc glTexCoord2f, s:dword, t:dword
160
	stdcall glTexCoord4f,[s],[t],0.0,1.0
161
	ret
162
endp
163
 
164
align 4
165
proc glTexCoord2fv uses eax, v:dword
166
	mov eax,[v]
167
	stdcall glTexCoord4f,[eax],[eax+4],0.0,1.0
168
	ret
169
endp
170
 
171
align 4
8063 IgorA 172
glEdgeFlag: ;flag
173
	push dword[esp] ;копируем адрес возврата
174
	push eax
175
	lea eax,[esp+8]
176
	mov dword[eax],OP_EdgeFlag
5153 IgorA 177
	stdcall gl_add_op,eax
8063 IgorA 178
	pop eax
179
	ret 8 ;=sizeof(dd)*2
5153 IgorA 180
 
181
; misc
182
 
183
align 4
8063 IgorA 184
glShadeModel: ;mode
5153 IgorA 185
;  assert(mode == GL_FLAT || mode == GL_SMOOTH);
8063 IgorA 186
	push dword[esp] ;копируем адрес возврата
187
	push eax
188
	lea eax,[esp+8]
189
	mov dword[eax],OP_ShadeModel
5153 IgorA 190
	stdcall gl_add_op,eax
8063 IgorA 191
	pop eax
192
	ret 8 ;=sizeof(dd)*2
5153 IgorA 193
 
194
align 4
8063 IgorA 195
glCullFace: ;mode
5153 IgorA 196
;  assert(mode == GL_BACK ||
197
;         mode == GL_FRONT ||
198
;         mode == GL_FRONT_AND_BACK);
8063 IgorA 199
	push dword[esp] ;копируем адрес возврата
200
	push eax
201
	lea eax,[esp+8]
202
	mov dword[eax],OP_CullFace
5153 IgorA 203
	stdcall gl_add_op,eax
8063 IgorA 204
	pop eax
205
	ret 8 ;=sizeof(dd)*2
5153 IgorA 206
 
207
align 4
208
proc glFrontFace uses eax, mode:dword
209
locals
210
	p rd 2
211
endl
212
 
213
;  assert(mode == GL_CCW || mode == GL_CW);
214
 
215
	mov dword[p],OP_FrontFace
216
	xor eax,eax
217
	cmp dword[mode],GL_CCW
218
	je @f
219
		inc eax
220
	@@:
221
	mov dword[p+4],eax
222
 
8063 IgorA 223
	lea eax,[ebp-8] ;=sizeof(dd)*2
5153 IgorA 224
	stdcall gl_add_op,eax
225
	ret
226
endp
227
 
228
align 4
8063 IgorA 229
glPolygonMode: ;face, mode
5153 IgorA 230
;  assert(face == GL_BACK ||
231
;         face == GL_FRONT ||
232
;         face == GL_FRONT_AND_BACK);
233
;  assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL);
8063 IgorA 234
	push dword[esp] ;копируем адрес возврата
235
	push eax
236
	lea eax,[esp+8]
237
	mov dword[eax],OP_PolygonMode
5153 IgorA 238
	stdcall gl_add_op,eax
8063 IgorA 239
	pop eax
240
	ret 12 ;=sizeof(dd)*3
5153 IgorA 241
 
242
; glEnable / glDisable
243
 
244
align 4
245
proc glEnable uses eax, cap:dword
246
locals
247
	p rd 3
248
endl
249
	mov dword[p],OP_EnableDisable
250
	mov eax,[cap]
251
	mov dword[p+4],eax
252
	mov dword[p+8],1
253
 
8063 IgorA 254
	lea eax,[ebp-12] ;=sizeof(dd)*3
5153 IgorA 255
	stdcall gl_add_op,eax
256
	ret
257
endp
258
 
259
align 4
260
proc glDisable uses eax, cap:dword
261
locals
262
	p rd 3
263
endl
264
	mov dword[p],OP_EnableDisable
265
	mov eax,[cap]
266
	mov dword[p+4],eax
267
	mov dword[p+8],0
268
 
8063 IgorA 269
	lea eax,[ebp-12] ;=sizeof(dd)*3
5153 IgorA 270
	stdcall gl_add_op,eax
271
	ret
272
endp
273
 
274
; glBegin / glEnd
275
 
276
align 4
8063 IgorA 277
glBegin: ;mode
278
	push dword[esp] ;копируем адрес возврата
279
	push eax
280
	lea eax,[esp+8]
281
	mov dword[eax],OP_Begin
5153 IgorA 282
	stdcall gl_add_op,eax
8063 IgorA 283
	pop eax
284
	ret 8 ;=sizeof(dd)*2
5153 IgorA 285
 
286
align 4
8063 IgorA 287
glEnd:
288
	stdcall gl_add_op,op_End
5153 IgorA 289
	ret
290
 
291
; matrix
292
 
293
align 4
8063 IgorA 294
glMatrixMode: ;mode
295
	push dword[esp] ;копируем адрес возврата
296
	push eax
297
	lea eax,[esp+8]
298
	mov dword[eax],OP_MatrixMode
5153 IgorA 299
	stdcall gl_add_op,eax
8063 IgorA 300
	pop eax
301
	ret 8 ;=sizeof(dd)*2
5153 IgorA 302
 
303
align 4
304
proc glLoadMatrixf uses ecx edi esi, m:dword
305
locals
306
	p rd 17
307
endl
308
	mov dword[p],OP_LoadMatrix
309
	mov ecx,16
310
	mov esi,[m]
311
	mov edi,ebp
312
	sub edi,64 ;=sizeof(M4)
313
	rep movsd
314
 
8063 IgorA 315
	lea ecx,[ebp-68] ;=sizeof(dd)*17
5153 IgorA 316
	stdcall gl_add_op,ecx
317
	ret
318
endp
319
 
320
align 4
8063 IgorA 321
glLoadIdentity:
322
	stdcall gl_add_op,op_LoadIdentity
5153 IgorA 323
	ret
324
 
325
align 4
326
proc glMultMatrixf uses ecx edi esi, m:dword
327
locals
328
	p rd 17
329
endl
330
	mov dword[p],OP_MultMatrix
331
	mov ecx,16
332
	mov esi,[m]
333
	mov edi,ebp
334
	sub edi,64 ;=sizeof(M4)
335
	rep movsd
336
 
8063 IgorA 337
	lea ecx,[ebp-68] ;=sizeof(dd)*17
5153 IgorA 338
	stdcall gl_add_op,ecx
339
	ret
340
endp
341
 
342
align 4
8063 IgorA 343
glPushMatrix:
344
	stdcall gl_add_op,op_PushMatrix
5153 IgorA 345
	ret
346
 
347
align 4
8063 IgorA 348
glPopMatrix:
349
	stdcall gl_add_op,op_PopMatrix
5153 IgorA 350
	ret
351
 
352
align 4
8063 IgorA 353
glRotatef: ;angle, x, y, z
354
	push dword[esp] ;копируем адрес возврата
355
	push eax
356
	lea eax,[esp+8]
357
	mov dword[eax],OP_Rotate
5153 IgorA 358
	stdcall gl_add_op,eax
8063 IgorA 359
	pop eax
360
	ret 20 ;=sizeof(dd)*5
5153 IgorA 361
 
362
align 4
8063 IgorA 363
glTranslatef: ;x, y, z
364
	push dword[esp] ;копируем адрес возврата
365
	push eax
366
	lea eax,[esp+8]
367
	mov dword[eax],OP_Translate
5153 IgorA 368
	stdcall gl_add_op,eax
8063 IgorA 369
	pop eax
370
	ret 16 ;=sizeof(dd)*4
5153 IgorA 371
 
372
align 4
8063 IgorA 373
glScalef: ;x, y, z
374
	push dword[esp] ;копируем адрес возврата
375
	push eax
376
	lea eax,[esp+8]
377
	mov dword[eax],OP_Scale
5153 IgorA 378
	stdcall gl_add_op,eax
8063 IgorA 379
	pop eax
380
	ret 16 ;=sizeof(dd)*4
5153 IgorA 381
 
382
align 4
8063 IgorA 383
glViewport: ;x, y, width, heigh
384
	push dword[esp] ;копируем адрес возврата
385
	push eax
386
	lea eax,[esp+8]
387
	mov dword[eax],OP_Viewport
5153 IgorA 388
	stdcall gl_add_op,eax
8063 IgorA 389
	pop eax
390
	ret 20 ;=sizeof(dd)*5
5153 IgorA 391
 
392
align 4
8059 IgorA 393
proc glFrustum uses eax, left:qword, right:qword, bottom:qword, top:qword,\
394
	near:qword, farv:qword
5153 IgorA 395
locals
396
	p rd 7
397
endl
398
	mov dword[p],OP_Frustum
8059 IgorA 399
	fld qword[left]
5153 IgorA 400
	fstp dword[p+4]
8059 IgorA 401
	fld qword[right]
5153 IgorA 402
	fstp dword[p+8]
8059 IgorA 403
	fld qword[bottom]
5153 IgorA 404
	fstp dword[p+12]
8059 IgorA 405
	fld qword[top]
5153 IgorA 406
	fstp dword[p+16]
8059 IgorA 407
	fld qword[near]
5153 IgorA 408
	fstp dword[p+20]
8059 IgorA 409
	fld qword[farv]
5153 IgorA 410
	fstp dword[p+24]
411
 
8063 IgorA 412
	lea eax,[ebp-28] ;=sizeof(dd)*7
5153 IgorA 413
	stdcall gl_add_op,eax
414
	ret
415
endp
416
 
8062 IgorA 417
align 4
418
proc glOrtho uses eax, left:qword, right:qword, bottom:qword, top:qword,\
419
	near:qword, farv:qword
420
locals
421
	p rd 7
422
endl
423
	mov dword[p],OP_Ortho
424
	fld qword[left]
425
	fstp dword[p+4]
426
	fld qword[right]
427
	fstp dword[p+8]
428
	fld qword[bottom]
429
	fstp dword[p+12]
430
	fld qword[top]
431
	fstp dword[p+16]
432
	fld qword[near]
433
	fstp dword[p+20]
434
	fld qword[farv]
435
	fstp dword[p+24]
436
 
437
	lea eax,[ebp-28] ;=sizeof(dd)*7
438
	stdcall gl_add_op,eax
439
	ret
440
endp
441
 
5353 IgorA 442
; lightening
5153 IgorA 443
 
444
align 4
445
proc glMaterialfv uses eax ecx, mode:dword, type:dword, v:dword
446
locals
447
	p rd 7
448
endl
449
 
450
;  assert(mode == GL_FRONT  || mode == GL_BACK || mode==GL_FRONT_AND_BACK);
451
 
452
	mov dword[p],OP_Material
453
	mov eax,[mode]
454
	mov dword[p+4],eax
455
	mov eax,[type]
456
	mov dword[p+8],eax
457
 
458
	mov eax,[v]
459
	mov ecx,[eax+8]
460
	mov dword[p+12],ecx
461
	mov ecx,[eax+4]
462
	mov dword[p+16],ecx
463
	mov ecx,[eax]
464
	mov dword[p+20],ecx
465
	mov ecx,[eax+12]
466
	mov dword[p+24],ecx
467
 
468
	cmp dword[type],GL_SHININESS
469
	jne @f
470
		mov dword[p+16],0.0
471
		mov dword[p+20],0.0
472
		mov dword[p+24],0.0
473
	@@:
474
 
8063 IgorA 475
	lea eax,[ebp-28] ;=sizeof(dd)*7
5153 IgorA 476
	stdcall gl_add_op,eax
477
	ret
478
endp
479
 
480
align 4
481
proc glMaterialf uses eax, mode:dword, type:dword, v:dword
482
locals
483
	p rd 7
484
endl
485
	mov dword[p],OP_Material
486
	mov eax,[mode]
487
	mov dword[p+4],eax
488
	mov eax,[type]
489
	mov dword[p+8],eax
490
	mov eax,[v]
491
	mov dword[p+12],eax
492
	mov dword[p+16],0.0
493
	mov dword[p+20],0.0
494
	mov dword[p+24],0.0
495
 
8063 IgorA 496
	lea eax,[ebp-28] ;=sizeof(dd)*7
5153 IgorA 497
	stdcall gl_add_op,eax
498
	ret
499
endp
500
 
501
align 4
8063 IgorA 502
glColorMaterial: ;mode, type
503
	push dword[esp] ;копируем адрес возврата
504
	push eax
505
	lea eax,[esp+8]
506
	mov dword[eax],OP_ColorMaterial
5153 IgorA 507
	stdcall gl_add_op,eax
8063 IgorA 508
	pop eax
509
	ret 12 ;=sizeof(dd)*3
5153 IgorA 510
 
511
align 4
512
proc glLightfv uses eax ecx, light:dword, type:dword, v:dword
513
locals
514
	p rd 7
515
endl
516
	mov dword[p],OP_Light
517
	mov eax,[light]
518
	mov dword[p+4],eax
519
	mov eax,[type]
520
	mov dword[p+8],eax
521
 
522
	;TODO: 3 composants ?
523
	mov eax,[v]
524
	mov ecx,[eax]
525
	mov dword[p+12],ecx
526
	mov ecx,[eax+4]
527
	mov dword[p+16],ecx
528
	mov ecx,[eax+8]
529
	mov dword[p+20],ecx
530
	mov ecx,[eax+12]
531
	mov dword[p+24],ecx
532
 
8063 IgorA 533
	lea eax,[ebp-28] ;=sizeof(dd)*7
5153 IgorA 534
	stdcall gl_add_op,eax
535
	ret
536
endp
537
 
538
align 4
539
proc glLightf uses eax, light:dword, type:dword, v:dword
540
locals
541
	p rd 7
542
endl
543
	mov dword[p],OP_Light
544
	mov eax,[light]
545
	mov dword[p+4],eax
546
	mov eax,[type]
547
	mov dword[p+8],eax
548
	mov eax,[v]
549
	mov dword[p+12],eax
550
	mov dword[p+16],0.0
551
	mov dword[p+20],0.0
552
	mov dword[p+24],0.0
553
 
8063 IgorA 554
	lea eax,[ebp-28] ;=sizeof(dd)*7
5153 IgorA 555
	stdcall gl_add_op,eax
556
	ret
557
endp
558
 
559
align 4
560
proc glLightModeli uses eax, pname:dword, param:dword
561
locals
562
	p rd 6
563
endl
564
	mov dword[p],OP_LightModel
565
	mov eax,[pname]
566
	mov dword[p+4],eax
567
	fild dword[param]
568
	fstp dword[p+8] ;преобразовали int во float
569
 
570
	mov dword[p+12],0.0
571
	mov dword[p+16],0.0
572
	mov dword[p+20],0.0
573
 
8063 IgorA 574
	lea eax,[ebp-24] ;=sizeof(dd)*6
5153 IgorA 575
	stdcall gl_add_op,eax
576
	ret
577
endp
578
 
579
align 4
580
proc glLightModelfv uses eax ecx, pname:dword, param:dword
581
locals
582
	p rd 6
583
endl
584
	mov dword[p],OP_LightModel
585
	mov eax,[pname]
586
	mov dword[p+4],eax
587
	mov eax,[param]
588
	mov ecx,[eax]
589
	mov dword[p+8],ecx
590
	mov ecx,[eax+4]
591
	mov dword[p+12],ecx
592
	mov ecx,[eax+8]
593
	mov dword[p+16],ecx
594
	mov ecx,[eax+12]
595
	mov dword[p+20],ecx
596
 
8063 IgorA 597
	lea eax,[ebp-24] ;=sizeof(dd)*6
5153 IgorA 598
	stdcall gl_add_op,eax
599
	ret
600
endp
601
 
5353 IgorA 602
; clear
5153 IgorA 603
 
604
align 4
8063 IgorA 605
glClear: ;mask
606
	push dword[esp] ;копируем адрес возврата
607
	push eax
608
	lea eax,[esp+8]
609
	mov dword[eax],OP_Clear
5153 IgorA 610
	stdcall gl_add_op,eax
8063 IgorA 611
	pop eax
612
	ret 8 ;=sizeof(dd)*2
5153 IgorA 613
 
614
align 4
615
proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword
616
locals
617
	p rd 5
618
endl
619
	mov dword[p],OP_ClearColor
620
	mov eax,[b]
621
	mov dword[p+4],eax
622
	mov eax,[g]
623
	mov dword[p+8],eax
624
	mov eax,[r]
625
	mov dword[p+12],eax
626
	mov eax,[a]
627
	mov dword[p+16],eax
628
 
8063 IgorA 629
	lea eax,[ebp-20] ;=sizeof(dd)*5
5153 IgorA 630
	stdcall gl_add_op,eax
631
	ret
632
endp
633
 
634
align 4
635
proc glClearDepth uses eax, depth:dword
636
locals
637
	p rd 2
638
endl
639
	mov dword[p],OP_ClearDepth
640
	mov eax,[depth]
641
	fld qword[eax]
642
	fstp dword[p+4]
643
 
8063 IgorA 644
	lea eax,[ebp-8] ;=sizeof(dd)*2
5153 IgorA 645
	stdcall gl_add_op,eax
646
	ret
647
endp
648
 
5353 IgorA 649
; textures
5153 IgorA 650
 
651
align 4
8063 IgorA 652
glTexImage2D: ;target, level, components, width, height, border, format, type, pixels
653
	push dword[esp] ;копируем адрес возврата
654
	push eax
655
	lea eax,[esp+8]
656
	mov dword[eax],OP_TexImage2D
657
	stdcall gl_add_op,eax
658
	pop eax
659
	ret 40 ;=sizeof(dd)*10
5153 IgorA 660
 
661
align 4
8063 IgorA 662
glBindTexture: ;target, texture
663
	push dword[esp] ;копируем адрес возврата
664
	push eax
665
	lea eax,[esp+8]
666
	mov dword[eax],OP_BindTexture
5153 IgorA 667
	stdcall gl_add_op,eax
8063 IgorA 668
	pop eax
669
	ret 12 ;=sizeof(dd)*3
5153 IgorA 670
 
671
align 4
672
proc glTexEnvi uses eax, target:dword, pname:dword, param:dword
673
locals
674
	p rd 8
675
endl
676
	mov dword[p],OP_TexEnv
677
	mov eax,[target]
678
	mov dword[p+4],eax
679
	mov eax,[pname]
680
	mov dword[p+8],eax
681
	mov eax,[param]
682
	mov dword[p+12],eax
683
	mov dword[p+16],0.0
684
	mov dword[p+20],0.0
685
	mov dword[p+24],0.0
686
	mov dword[p+28],0.0
687
 
8063 IgorA 688
	lea eax,[ebp-32] ;=sizeof(dd)*8
5153 IgorA 689
	stdcall gl_add_op,eax
690
	ret
691
endp
692
 
693
align 4
694
proc glTexParameteri uses eax, target:dword, pname:dword, param:dword
695
locals
696
	p rd 8
697
endl
698
	mov dword[p],OP_TexParameter
699
	mov eax,[target]
700
	mov dword[p+4],eax
701
	mov eax,[pname]
702
	mov dword[p+8],eax
703
	mov eax,[param]
704
	mov dword[p+12],eax
705
	mov dword[p+16],0.0
706
	mov dword[p+20],0.0
707
	mov dword[p+24],0.0
708
	mov dword[p+28],0.0
709
 
8063 IgorA 710
	lea eax,[ebp-32] ;=sizeof(dd)*8
5153 IgorA 711
	stdcall gl_add_op,eax
712
	ret
713
endp
714
 
715
align 4
8063 IgorA 716
glPixelStorei: ;pname, param
717
	push dword[esp] ;копируем адрес возврата
718
	push eax
719
	lea eax,[esp+8]
720
	mov dword[eax],OP_PixelStore
5153 IgorA 721
	stdcall gl_add_op,eax
8063 IgorA 722
	pop eax
723
	ret 12 ;=sizeof(dd)*3
5153 IgorA 724
 
5353 IgorA 725
; selection
5153 IgorA 726
 
727
align 4
8063 IgorA 728
glInitNames:
729
	stdcall gl_add_op,op_InitNames
5153 IgorA 730
	ret
731
 
732
align 4
8063 IgorA 733
glPushName: ;name
734
	push dword[esp] ;копируем адрес возврата
735
	push eax
736
	lea eax,[esp+8]
737
	mov dword[eax],OP_PushName
5153 IgorA 738
	stdcall gl_add_op,eax
8063 IgorA 739
	pop eax
740
	ret 8 ;=sizeof(dd)*2
5153 IgorA 741
 
742
align 4
8063 IgorA 743
glPopName:
744
	stdcall gl_add_op,op_PopName
5153 IgorA 745
	ret
746
 
747
align 4
8063 IgorA 748
glLoadName: ;name
749
	push dword[esp] ;копируем адрес возврата
750
	push eax
751
	lea eax,[esp+8]
752
	mov dword[eax],OP_LoadName
5153 IgorA 753
	stdcall gl_add_op,eax
8063 IgorA 754
	pop eax
755
	ret 8 ;=sizeof(dd)*2
5153 IgorA 756
 
757
align 4
8063 IgorA 758
glPolygonOffset: ;factor, units
759
	push dword[esp] ;копируем адрес возврата
760
	push eax
761
	lea eax,[esp+8]
762
	mov dword[eax],OP_PolygonOffset
5153 IgorA 763
	stdcall gl_add_op,eax
8063 IgorA 764
	pop eax
765
	ret 12 ;=sizeof(dd)*3
5153 IgorA 766
 
5353 IgorA 767
; Special Functions
5153 IgorA 768
 
769
align 4
8063 IgorA 770
glCallList: ;list
771
	push dword[esp] ;копируем адрес возврата
772
	push eax
773
	lea eax,[esp+8]
774
	mov dword[eax],OP_CallList
5153 IgorA 775
	stdcall gl_add_op,eax
8063 IgorA 776
	pop eax
777
	ret 8 ;=sizeof(dd)*2
5153 IgorA 778
 
779
align 4
780
proc glFlush ;(void)
781
	;nothing to do
782
	ret
783
endp
784
 
785
align 4
8063 IgorA 786
glHint: ;target, mode
787
	push dword[esp] ;копируем адрес возврата
788
	push eax
789
	lea eax,[esp+8]
790
	mov dword[eax],OP_Hint
5153 IgorA 791
	stdcall gl_add_op,eax
8063 IgorA 792
	pop eax
793
	ret 12 ;=sizeof(dd)*3
5153 IgorA 794
 
795
; Non standard functions
796
 
797
align 4
798
proc glDebug uses eax, mode:dword
799
	stdcall gl_get_context ;после вызова функции в eax указатель на GLContext
800
	push dword[mode]
6523 IgorA 801
	pop dword[eax+GLContext.print_flag]
5153 IgorA 802
	ret
803
endp