Subversion Repositories Kolibri OS

Rev

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

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