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