Subversion Repositories Kolibri OS

Rev

Rev 8069 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8069 Rev 8408
1
use32
1
use32
2
	org 0
2
	org 0
3
	db 'MENUET01'
3
	db 'MENUET01'
4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
5
 
5
 
6
include '../../../../../proc32.inc'
6
include '../../../../../proc32.inc'
7
include '../../../../../macros.inc'
7
include '../../../../../macros.inc'
8
include '../../../../../KOSfuncs.inc'
8
include '../../../../../KOSfuncs.inc'
9
include '../../../../../develop/libraries/box_lib/load_lib.mac'
9
include '../../../../../load_lib.mac'
10
include '../../../../../dll.inc'
10
include '../../../../../dll.inc'
11
include '../opengl_const.inc'
11
include '../opengl_const.inc'
12
 
12
 
13
@use_library
13
@use_library
14
 
14
 
15
align 4
15
align 4
16
start:
16
start:
17
	load_library name_tgl, cur_dir_path, library_path, system_path, \
17
	load_library name_tgl, library_path, system_path, import_tinygl
18
		err_message_found_lib, head_f_l, import_lib_tinygl, err_message_import, head_f_i
-
 
19
	cmp eax,SF_TERMINATE_PROCESS
18
	cmp eax,SF_TERMINATE_PROCESS
20
	jz button.exit
19
	jz button.exit
21
 
20
 
22
	mcall SF_SET_EVENTS_MASK,0x27
21
	mcall SF_SET_EVENTS_MASK,0x27
23
 
22
 
24
stdcall [kosglMakeCurrent], 10,10,300,225,ctx1
23
stdcall [kosglMakeCurrent], 10,10,300,225,ctx1
25
stdcall [glEnable], GL_DEPTH_TEST
24
stdcall [glEnable], GL_DEPTH_TEST
26
stdcall [gluNewQuadric]
25
call [gluNewQuadric]
27
mov [qObj],eax
26
mov [qObj],eax
28
 
27
 
29
stdcall [glClearColor], 0.5,0.5,0.5,0.0
28
stdcall [glClearColor], 0.5,0.5,0.5,0.0
30
 
29
 
31
call draw_3d
30
call draw_3d
32
 
31
 
33
align 4
32
align 4
34
red_win:
33
red_win:
35
	call draw_window
34
	call draw_window
36
 
35
 
37
align 16
36
align 16
38
still:
37
still:
39
	mcall SF_WAIT_EVENT
38
	mcall SF_WAIT_EVENT
40
	cmp al,1
39
	cmp al,1
41
	jz red_win
40
	jz red_win
42
	cmp al,2
41
	cmp al,2
43
	jz key
42
	jz key
44
	cmp al,3
43
	cmp al,3
45
	jz button
44
	jz button
46
	jmp still
45
	jmp still
47
 
46
 
48
align 4
47
align 4
49
draw_window:
48
draw_window:
50
	pushad
49
	pushad
51
	mcall SF_REDRAW,SSF_BEGIN_DRAW
50
	mcall SF_REDRAW,SSF_BEGIN_DRAW
52
 
51
 
53
	mov edx,0x33ffffff ;0x73ffffff
52
	mov edx,0x33ffffff ;0x73ffffff
54
	mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
53
	mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
55
	call [kosglSwapBuffers]
54
	call [kosglSwapBuffers]
56
 
55
 
57
	mcall SF_REDRAW,SSF_END_DRAW
56
	mcall SF_REDRAW,SSF_END_DRAW
58
	popad
57
	popad
59
	ret
58
	ret
60
 
59
 
61
align 4
60
align 4
62
key:
61
key:
63
	mcall SF_GET_KEY
62
	mcall SF_GET_KEY
64
 
63
 
65
	cmp ah,27 ;Esc
64
	cmp ah,27 ;Esc
66
	je button.exit
65
	je button.exit
67
 
66
 
68
	cmp ah,61 ;+
67
	cmp ah,61 ;+
69
	jne @f
68
	jne @f
70
	    fld dword[scale]
69
	    fld dword[scale]
71
	    fadd dword[delt_sc]
70
	    fadd dword[delt_sc]
72
	    fstp dword[scale]
71
	    fstp dword[scale]
73
	    call draw_3d
72
	    call draw_3d
74
	    call [kosglSwapBuffers]
73
	    call [kosglSwapBuffers]
75
		jmp still
74
		jmp still
76
	@@:
75
	@@:
77
	cmp ah,45 ;-
76
	cmp ah,45 ;-
78
	jne @f
77
	jne @f
79
	    fld dword[scale]
78
	    fld dword[scale]
80
	    fsub dword[delt_sc]
79
	    fsub dword[delt_sc]
81
	    fstp dword[scale]
80
	    fstp dword[scale]
82
	    call draw_3d
81
	    call draw_3d
83
	    call [kosglSwapBuffers]
82
	    call [kosglSwapBuffers]
84
		jmp still
83
		jmp still
85
	@@:
84
	@@:
86
	cmp ah,178 ;Up
85
	cmp ah,178 ;Up
87
	jne @f
86
	jne @f
88
		fld dword[angle_y]
87
		fld dword[angle_y]
89
		fadd dword[delt_size]
88
		fadd dword[delt_size]
90
		fstp dword[angle_y]
89
		fstp dword[angle_y]
91
		call draw_3d
90
		call draw_3d
92
		call [kosglSwapBuffers]
91
		call [kosglSwapBuffers]
93
		jmp still
92
		jmp still
94
	@@:
93
	@@:
95
	cmp ah,177 ;Down
94
	cmp ah,177 ;Down
96
	jne @f
95
	jne @f
97
		fld dword[angle_y]
96
		fld dword[angle_y]
98
		fsub dword[delt_size]
97
		fsub dword[delt_size]
99
		fstp dword[angle_y]
98
		fstp dword[angle_y]
100
		call draw_3d
99
		call draw_3d
101
		call [kosglSwapBuffers]
100
		call [kosglSwapBuffers]
102
		jmp still
101
		jmp still
103
	@@:
102
	@@:
104
	cmp ah,176 ;Left
103
	cmp ah,176 ;Left
105
	jne @f
104
	jne @f
106
		fld dword[angle_z]
105
		fld dword[angle_z]
107
		fadd dword[delt_size]
106
		fadd dword[delt_size]
108
		fstp dword[angle_z]
107
		fstp dword[angle_z]
109
		call draw_3d
108
		call draw_3d
110
		call [kosglSwapBuffers]
109
		call [kosglSwapBuffers]
111
		jmp still
110
		jmp still
112
	@@:
111
	@@:
113
	cmp ah,179 ;Right
112
	cmp ah,179 ;Right
114
	jne @f
113
	jne @f
115
		fld dword[angle_z]
114
		fld dword[angle_z]
116
		fsub dword[delt_size]
115
		fsub dword[delt_size]
117
		fstp dword[angle_z]
116
		fstp dword[angle_z]
118
		call draw_3d
117
		call draw_3d
119
		call [kosglSwapBuffers]
118
		call [kosglSwapBuffers]
120
		;jmp still
119
		;jmp still
121
	@@:
120
	@@:
122
 
121
 
123
	jmp still
122
	jmp still
124
 
123
 
125
align 4
124
align 4
126
button:
125
button:
127
	mcall SF_GET_BUTTON
126
	mcall SF_GET_BUTTON
128
	cmp ah,1
127
	cmp ah,1
129
	jne still
128
	jne still
130
.exit:
129
.exit:
131
	stdcall [gluDeleteQuadric], [qObj]
130
	stdcall [gluDeleteQuadric], [qObj]
132
	mcall SF_TERMINATE_PROCESS
131
	mcall SF_TERMINATE_PROCESS
133
 
132
 
134
 
133
 
135
align 4
134
align 4
136
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
135
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
137
 
136
 
138
align 4
137
align 4
139
draw_3d:
138
draw_3d:
140
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
139
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
141
 
140
 
142
stdcall [glColor3f], 1.0, 1.0, 0.0
141
stdcall [glColor3f], 1.0, 1.0, 0.0
143
 
142
 
144
call [glPushMatrix]
143
call [glPushMatrix]
145
	stdcall [glTranslatef], 0.0,0.0,0.5
144
	stdcall [glTranslatef], 0.0,0.0,0.5
146
	stdcall [glScalef], [scale], [scale], [scale]
145
	stdcall [glScalef], [scale], [scale], [scale]
147
 
146
 
148
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
147
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
149
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
148
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
150
	stdcall [gluSphere], [qObj], 1.0, 16,16
149
	stdcall [gluSphere], [qObj], 1.0, 16,16
151
 
150
 
152
	stdcall [glColor3f], 1.0, 0.0, 0.0
151
	stdcall [glColor3f], 1.0, 0.0, 0.0
153
	stdcall [glTranslatef], -1.6,0.0,0.0
152
	stdcall [glTranslatef], -1.6,0.0,0.0
154
	stdcall [gluSphere], [qObj], 0.55, 8,8
153
	stdcall [gluSphere], [qObj], 0.55, 8,8
155
 
154
 
156
	stdcall [glColor3f], 0.0, 0.0, 1.0
155
	stdcall [glColor3f], 0.0, 0.0, 1.0
157
	stdcall [glTranslatef], 3.2,0.0,0.0
156
	stdcall [glTranslatef], 3.2,0.0,0.0
158
	stdcall [gluSphere], [qObj], 0.55, 8,8
157
	stdcall [gluSphere], [qObj], 0.55, 8,8
159
call [glPopMatrix]
158
call [glPopMatrix]
160
ret
159
ret
161
 
160
 
162
align 4
161
align 4
163
qObj dd 0
162
qObj dd 0
164
 
163
 
165
scale dd 0.4
164
scale dd 0.4
166
delt_sc dd 0.05
165
delt_sc dd 0.05
167
angle_z dd 0.0
166
angle_z dd 0.0
168
angle_y dd 0.0
167
angle_y dd 0.0
169
delt_size dd 3.0
168
delt_size dd 3.0
170
 
169
 
171
;--------------------------------------------------
170
;--------------------------------------------------
172
align 4
171
align 4
173
import_lib_tinygl:
172
import_tinygl:
174
 
173
 
175
macro E_LIB n
174
macro E_LIB n
176
{
175
{
177
	n dd sz_#n
176
	n dd sz_#n
178
}
177
}
179
include '../export.inc'
178
include '../export.inc'
180
	dd 0,0
179
	dd 0,0
181
macro E_LIB n
180
macro E_LIB n
182
{
181
{
183
	sz_#n db `n,0
182
	sz_#n db `n,0
184
}
183
}
185
include '../export.inc'
184
include '../export.inc'
186
 
185
 
187
;--------------------------------------------------
186
;--------------------------------------------------
188
system_path db '/sys/lib/'
187
system_path db '/sys/lib/'
189
name_tgl db 'tinygl.obj',0
188
name_tgl db 'tinygl.obj',0
190
 
-
 
191
head_f_i:
-
 
192
head_f_l db '"System error',0
-
 
193
err_message_import db 'Error on load import library ',39,'tinygl.obj',39,'" -tE',0
-
 
194
err_message_found_lib db 'Sorry I cannot load library ',39,'tinygl.obj',39,'" -tE',0
-
 
195
;--------------------------------------------------
189
;--------------------------------------------------
196
 
190
 
197
align 16
191
align 16
198
i_end:
192
i_end:
199
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
193
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
-
 
194
cur_dir_path rb 4096
200
;sizeof.TinyGLContext = 28
195
library_path rb 4096
201
	rb 2048
196
	rb 2048
202
stacktop:
197
stacktop:
203
cur_dir_path:
-
 
204
	rb 4096
-
 
205
library_path:
-
 
206
	rb 4096
-
 
207
mem:
198
mem: