Subversion Repositories Kolibri OS

Rev

Rev 5337 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5337 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,400,350,ctx1
28
stdcall [glEnable], GL_DEPTH_TEST
29
stdcall [glClearColor], 0.0,0.0,0.0,0.0
30
stdcall [glShadeModel], GL_SMOOTH
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)+430,(30 shl 16)+400,,,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
	cmp ah,61 ;+
70
	jne @f
71
	    fld dword[scale]
72
	    fadd dword[delt_sc]
73
	    fstp dword[scale]
74
	    call draw_3d
75
	    stdcall [kosglSwapBuffers]
76
	@@:
77
	cmp ah,45 ;-
78
	jne @f
79
	    fld dword[scale]
80
	    fsub dword[delt_sc]
81
	    fstp dword[scale]
82
	    call draw_3d
83
	    stdcall [kosglSwapBuffers]
84
	@@:
85
	cmp ah,178 ;Up
86
	jne @f
87
		fld dword[angle_y]
88
		fadd dword[delt_size]
89
		fstp dword[angle_y]
90
		call draw_3d
91
		stdcall [kosglSwapBuffers]
92
	@@:
93
	cmp ah,177 ;Down
94
	jne @f
95
		fld dword[angle_y]
96
		fsub dword[delt_size]
97
		fstp dword[angle_y]
98
		call draw_3d
99
		stdcall [kosglSwapBuffers]
100
	@@:
101
	cmp ah,176 ;Left
102
	jne @f
103
		fld dword[angle_z]
104
		fadd dword[delt_size]
105
		fstp dword[angle_z]
106
		call draw_3d
107
		stdcall [kosglSwapBuffers]
108
	@@:
109
	cmp ah,179 ;Right
110
	jne @f
111
		fld dword[angle_z]
112
		fsub dword[delt_size]
113
		fstp dword[angle_z]
114
		call draw_3d
115
		stdcall [kosglSwapBuffers]
116
	@@:
117
 
118
	jmp still
119
 
120
align 4
121
button:
122
	mcall 17
123
	cmp ah,1
124
	jne still
125
.exit:
126
	mcall -1
127
 
128
 
129
align 4
130
caption db 'Test opengl 1.1 arrays, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
131
align 4
132
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
133
;sizeof.TinyGLContext = 28
134
 
135
align 4
136
draw_3d:
137
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
138
stdcall [glPushMatrix]
139
 
140
	;масштаб и повороты
141
	stdcall [glTranslatef], 0.0,0.0,0.5
142
	stdcall [glScalef], [scale], [scale], [scale]
143
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
144
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
145
 
146
	;рисование через массивы
147
	stdcall [glVertexPointer], 2, GL_FLOAT, 0, Vertex ;задаем массив для вершин, 2 - число координат для одной вершины
148
	stdcall [glColorPointer],  3, GL_FLOAT, 0, Colors ;задаем массив для цветов, 3 - число параметров для одной точки
149
	stdcall [glEnableClientState], GL_VERTEX_ARRAY    ;включаем режим рисования вершин
150
	stdcall [glEnableClientState], GL_COLOR_ARRAY     ;включаем режим рисования цветов
151
	stdcall [glDrawArrays], GL_POLYGON, 0, 4 ;рисование полигона из 4-х вершин (равносильно вызову 8-ми функций: 4 - для вершин, 4 - для цетов)
152
	stdcall [glDisableClientState], GL_COLOR_ARRAY    ;отключаем режим рисования цветов
153
	stdcall [glDisableClientState], GL_VERTEX_ARRAY   ;отключаем режим рисования вершин
154
 
155
stdcall [glPopMatrix]
156
ret
157
 
158
align 4
159
scale dd 0.8
160
delt_sc dd 0.05
161
angle_z dd 0.0
162
angle_y dd 0.0
163
delt_size dd 3.0
164
 
165
align 4
166
Vertex dd -0.9, -0.9, -0.9, 0.9, 0.9, 0.9, 0.9, -0.9 ;4 вершины (по 2 координаты)
167
Colors dd 0.0, 0.5, 1.0, 1.0, 0.0, 0.5, 1.0, 1.0, 1.0, 0.5, 1.0, 0.0 ;4 цвета (по 3 параметра)
168
 
169
;--------------------------------------------------
170
align 4
171
import_lib_tinygl:
172
 
173
macro E_LIB n
174
{
175
	n dd sz_#n
176
}
177
include '../export.inc'
178
	dd 0,0
179
macro E_LIB n
180
{
181
	sz_#n db `n,0
182
}
183
include '../export.inc'
184
 
185
;--------------------------------------------------
186
system_path db '/sys/lib/'
187
name_tgl db 'tinygl.obj',0
188
err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0
189
head_f_i:
190
head_f_l db 'System error',0
191
err_message_import db 'Error on load import library tinygl.obj',0
192
;--------------------------------------------------
193
 
194
i_end:
5353 IgorA 195
	rb 4096
5337 IgorA 196
stacktop:
197
cur_dir_path:
198
	rb 4096
199
library_path:
200
	rb 4096
201
mem: