Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
5187 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
stdcall [glClearColor], 0.2,0.0,0.2,0.0
30
stdcall [glShadeModel],GL_FLAT
31
 
32
call draw_3d
33
 
34
align 4
35
red_win:
36
	call draw_window
37
 
38
align 4
39
still:
40
	mcall 10
41
	cmp al,1
42
	jz red_win
43
	cmp al,2
44
	jz key
45
	cmp al,3
46
	jz button
47
	jmp still
48
 
49
align 4
50
draw_window:
51
	pushad
52
	mcall 12,1
53
 
54
	mov edx,0x33ffffff ;0x73ffffff
55
	mcall 0,(50 shl 16)+330,(30 shl 16)+275,,,caption
56
	stdcall [kosglSwapBuffers]
57
 
58
	mcall 12,2
59
	popad
60
	ret
61
 
62
align 4
63
key:
64
	mcall 2
65
 
66
	cmp ah,27 ;Esc
67
	je button.exit
68
 
69
	;178 ;Up
70
	;177 ;Down
71
	cmp ah,176 ;Left
72
	jne @f
73
		fld dword[angle_z]
74
		fadd dword[delt_size]
75
		fstp dword[angle_z]
76
		call draw_3d
77
		stdcall [kosglSwapBuffers]
78
	@@:
79
	cmp ah,179 ;Right
80
	jne @f
81
		fld dword[angle_z]
82
		fsub dword[delt_size]
83
		fstp dword[angle_z]
84
		call draw_3d
85
		stdcall [kosglSwapBuffers]
86
	@@:
87
 
88
	jmp still
89
 
90
align 4
91
button:
92
	mcall 17
93
	cmp ah,1
94
	jne still
95
.exit:
96
	mcall -1
97
 
98
 
99
align 4
100
caption db 'Test tinygl library, [Esc] - exit, [<-] and [->] - rotate',0
101
align 4
102
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
103
;sizeof.TinyGLContext = 28
104
 
105
align 4
106
draw_3d:
107
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
108
 
109
stdcall [glPushMatrix]
110
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
111
 
112
stdcall [glColor3f],0.0, 0.0, 1.0
113
	stdcall [glBegin],GL_LINE_LOOP
114
	stdcall [glVertex3f], 0.0,    0.5, 0.3
115
	stdcall [glVertex3f], 0.354,  0.354, 0.3
116
	stdcall [glVertex3f], 0.5,    0.0, 0.3
117
	stdcall [glEnd]
118
;stdcall [glColor3f],1.0, 1.0, 0.0
119
	stdcall [glBegin],GL_LINE_LOOP
120
	stdcall [glVertex3f], 0.354, -0.354, 0.3
121
	stdcall [glVertex3f], 0.0,   -0.5, 0.3
122
	stdcall [glVertex3f], -0.354,-0.354, 0.3
123
	stdcall [glEnd]
124
 
125
	stdcall [glColor3f],1.0, 0.0, 0.0
126
	stdcall [glBegin],GL_TRIANGLES
127
	stdcall [glVertex3f], 0.0,    0.5, 0.1
128
	stdcall [glVertex3f], 0.354,  0.354, 0.1
129
	stdcall [glVertex3f], 0.5,    0.0, 0.1
130
stdcall [glColor3f],1.0, 1.0, 0.0
131
	stdcall [glVertex3f], 0.354, -0.354, 0.1
132
	stdcall [glVertex3f], 0.0,   -0.5, 0.1
133
	stdcall [glVertex3f], -0.354,-0.354, 0.1
134
	stdcall [glEnd]
135
 
136
stdcall [glPopMatrix]
137
ret
138
 
139
angle_z dd 15.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: