Subversion Repositories Kolibri OS

Rev

Rev 8062 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5171 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01'
4
	dd 0x1
5
	dd start
6
	dd i_end
7
	dd mem,stacktop
8
	dd 0,cur_dir_path
9
 
10
include '../../../../../../programs/proc32.inc'
11
include '../../../../../../programs/macros.inc'
12
include '../../../../../../programs/develop/libraries/box_lib/load_lib.mac'
13
include '../../../../../../programs/dll.inc'
14
include '../opengl_const.inc'
15
 
16
@use_library
17
 
18
align 4
19
start:
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
22
	cmp eax,-1
23
	jz button.exit
24
 
25
	mcall 40,0x27
26
 
27
stdcall [kosglMakeCurrent], 10,10,300,225,ctx1
28
stdcall [glEnable], GL_DEPTH_TEST
29
 
30
stdcall [glGenLists],1
31
mov [obj1],eax
32
stdcall [glNewList],eax,GL_COMPILE
33
;---
34
	stdcall [glColor3f],1.0, 0.0, 0.0
35
	stdcall [glBegin],GL_LINE_LOOP
36
		stdcall [glVertex3f], 0,      0.9, 0.1
37
		stdcall [glVertex3f], 0.636,  0.636, 0.1
38
		stdcall [glVertex3f], 0.9,    0.0, 0.1
39
		stdcall [glVertex3f], 0.636, -0.636, 0.1
40
		stdcall [glVertex3f], 0.0,   -0.9, 0.1
41
		stdcall [glVertex3f], -0.636,-0.636, 0.1
42
		stdcall [glVertex3f], -0.9,   0.0, 0.1
43
		stdcall [glVertex3f], -0.636, 0.636, 0.1
44
	call [glEnd]
45
 
46
	stdcall [glColor3f],0.0, 0.0, 1.0
47
	stdcall [glBegin],GL_LINE_LOOP
48
		stdcall [glVertex3f], 0.0, 1.1, 0.1
49
		stdcall [glVertex3f], 0.778, 0.778, 0.1
50
		stdcall [glVertex3f], 2.1, 0.0, 0.1
51
		stdcall [glVertex3f], 0.778, -0.778, 0.1
52
		stdcall [glVertex3f], 0.0, -1.1, 0.1
53
		stdcall [glVertex3f], -0.778, -0.778, 0.1
54
		stdcall [glVertex3f], -2.1, 0.0, 0.1
55
		stdcall [glVertex3f], -0.778, 0.778, 0.1
56
	call [glEnd]
57
;---
58
call [glEndList]
59
 
60
call draw_3d
61
 
62
align 4
63
red_win:
64
	call draw_window
65
 
66
align 4
67
still:
68
	mcall 10
69
	cmp al,1
70
	jz red_win
71
	cmp al,2
72
	jz key
73
	cmp al,3
74
	jz button
75
	jmp still
76
 
77
align 4
78
draw_window:
79
	pushad
80
	mcall 12,1
81
 
82
	mov edx,0x33ffffff ;0x73ffffff
83
	mcall 0,(50 shl 16)+330,(30 shl 16)+275,,,caption
84
	stdcall [kosglSwapBuffers]
85
 
86
	mcall 12,2
87
	popad
88
	ret
89
 
90
align 4
91
key:
92
	mcall 2
93
 
94
	cmp ah,27 ;Esc
95
	je button.exit
96
 
97
	;178 ;Up
98
	;177 ;Down
99
	cmp ah,176 ;Left
100
	jne @f
101
		fld dword[angle_z]
102
		fadd dword[delt_size]
103
		fstp dword[angle_z]
104
		call draw_3d
105
		stdcall [kosglSwapBuffers]
106
	@@:
107
	cmp ah,179 ;Right
108
	jne @f
109
		fld dword[angle_z]
110
		fsub dword[delt_size]
111
		fstp dword[angle_z]
112
		call draw_3d
113
		stdcall [kosglSwapBuffers]
114
	@@:
115
 
116
	jmp still
117
 
118
align 4
119
button:
120
	mcall 17
121
	cmp ah,1
122
	jne still
123
.exit:
124
	mcall -1
125
 
126
 
127
align 4
128
caption db 'Test tinygl library, [Esc] - exit, [<-] and [->] - rotate',0
129
align 4
130
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
131
;sizeof.TinyGLContext = 28
132
 
133
align 4
134
draw_3d:
135
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
136
 
137
stdcall [glPushMatrix]
138
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
139
	stdcall [glScalef], 0.3,0.3,0.3
140
 
141
	stdcall [glCallList],[obj1]
142
 
143
stdcall [glPopMatrix]
144
ret
145
 
146
align 4
147
angle_z dd 0.0
148
delt_size dd 3.0
149
obj1 dd ?
150
 
151
;--------------------------------------------------
152
align 4
153
import_lib_tinygl:
154
 
155
macro E_LIB n
156
{
157
	n dd sz_#n
158
}
159
include '../export.inc'
160
	dd 0,0
161
macro E_LIB n
162
{
163
	sz_#n db `n,0
164
}
165
include '../export.inc'
166
 
167
;--------------------------------------------------
168
system_path db '/sys/lib/'
169
name_tgl db 'tinygl.obj',0
170
err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0
171
head_f_i:
172
head_f_l db 'System error',0
173
err_message_import db 'Error on load import library tinygl.obj',0
174
;--------------------------------------------------
175
 
176
i_end:
177
	rb 1024
178
stacktop:
179
cur_dir_path:
180
	rb 4096
181
library_path:
182
	rb 4096
183
mem: