Subversion Repositories Kolibri OS

Rev

Rev 5353 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5337 IgorA 1
use32
8408 IgorA 2
	org 0
5337 IgorA 3
	db 'MENUET01'
8408 IgorA 4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
5337 IgorA 5
 
8408 IgorA 6
include '../../../../../proc32.inc'
7
include '../../../../../macros.inc'
8
include '../../../../../KOSfuncs.inc'
9
include '../../../../../load_lib.mac'
10
include '../../../../../dll.inc'
5337 IgorA 11
include '../opengl_const.inc'
12
 
13
@use_library
14
 
15
align 4
16
start:
8408 IgorA 17
	load_library name_tgl, library_path, system_path, import_tinygl
5337 IgorA 18
	cmp eax,-1
19
	jz button.exit
20
 
8408 IgorA 21
	mcall SF_SET_EVENTS_MASK,0x27
5337 IgorA 22
 
23
stdcall [kosglMakeCurrent], 10,10,400,350,ctx1
24
stdcall [glEnable], GL_DEPTH_TEST
25
stdcall [glClearColor], 0.0,0.0,0.0,0.0
26
stdcall [glShadeModel], GL_SMOOTH
27
 
28
call draw_3d
29
 
30
align 4
31
red_win:
32
	call draw_window
33
 
34
align 4
35
still:
8408 IgorA 36
	mcall SF_WAIT_EVENT
5337 IgorA 37
	cmp al,1
38
	jz red_win
39
	cmp al,2
40
	jz key
41
	cmp al,3
42
	jz button
43
	jmp still
44
 
45
align 4
46
draw_window:
47
	pushad
8408 IgorA 48
	mcall SF_REDRAW,SSF_BEGIN_DRAW
5337 IgorA 49
 
8408 IgorA 50
	mcall SF_CREATE_WINDOW,(50 shl 16)+430,(30 shl 16)+400,0x33ffffff,,caption
51
	call [kosglSwapBuffers]
5337 IgorA 52
 
8408 IgorA 53
	mcall SF_REDRAW,SSF_END_DRAW
5337 IgorA 54
	popad
55
	ret
56
 
57
align 4
58
key:
8408 IgorA 59
	mcall SF_GET_KEY
5337 IgorA 60
 
61
	cmp ah,27 ;Esc
62
	je button.exit
63
 
64
	cmp ah,61 ;+
65
	jne @f
66
	    fld dword[scale]
67
	    fadd dword[delt_sc]
68
	    fstp dword[scale]
69
	    call draw_3d
8408 IgorA 70
	    call [kosglSwapBuffers]
5337 IgorA 71
	@@:
72
	cmp ah,45 ;-
73
	jne @f
74
	    fld dword[scale]
75
	    fsub dword[delt_sc]
76
	    fstp dword[scale]
77
	    call draw_3d
8408 IgorA 78
	    call [kosglSwapBuffers]
5337 IgorA 79
	@@:
80
	cmp ah,178 ;Up
81
	jne @f
82
		fld dword[angle_y]
83
		fadd dword[delt_size]
84
		fstp dword[angle_y]
85
		call draw_3d
8408 IgorA 86
		call [kosglSwapBuffers]
5337 IgorA 87
	@@:
88
	cmp ah,177 ;Down
89
	jne @f
90
		fld dword[angle_y]
91
		fsub dword[delt_size]
92
		fstp dword[angle_y]
93
		call draw_3d
8408 IgorA 94
		call [kosglSwapBuffers]
5337 IgorA 95
	@@:
96
	cmp ah,176 ;Left
97
	jne @f
98
		fld dword[angle_z]
99
		fadd dword[delt_size]
100
		fstp dword[angle_z]
101
		call draw_3d
8408 IgorA 102
		call [kosglSwapBuffers]
5337 IgorA 103
	@@:
104
	cmp ah,179 ;Right
105
	jne @f
106
		fld dword[angle_z]
107
		fsub dword[delt_size]
108
		fstp dword[angle_z]
109
		call draw_3d
8408 IgorA 110
		call [kosglSwapBuffers]
5337 IgorA 111
	@@:
112
 
113
	jmp still
114
 
115
align 4
116
button:
8408 IgorA 117
	mcall SF_GET_BUTTON
5337 IgorA 118
	cmp ah,1
119
	jne still
120
.exit:
8408 IgorA 121
	mcall SF_TERMINATE_PROCESS
5337 IgorA 122
 
123
 
124
align 4
125
caption db 'Test opengl 1.1 arrays, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
126
 
127
align 4
128
draw_3d:
129
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
8408 IgorA 130
call [glPushMatrix]
5337 IgorA 131
 
132
	;масштаб и повороты
133
	stdcall [glTranslatef], 0.0,0.0,0.5
134
	stdcall [glScalef], [scale], [scale], [scale]
135
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
136
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
137
 
138
	;рисование через массивы
139
	stdcall [glVertexPointer], 2, GL_FLOAT, 0, Vertex ;задаем массив для вершин, 2 - число координат для одной вершины
140
	stdcall [glColorPointer],  3, GL_FLOAT, 0, Colors ;задаем массив для цветов, 3 - число параметров для одной точки
141
	stdcall [glEnableClientState], GL_VERTEX_ARRAY    ;включаем режим рисования вершин
142
	stdcall [glEnableClientState], GL_COLOR_ARRAY     ;включаем режим рисования цветов
143
	stdcall [glDrawArrays], GL_POLYGON, 0, 4 ;рисование полигона из 4-х вершин (равносильно вызову 8-ми функций: 4 - для вершин, 4 - для цетов)
144
	stdcall [glDisableClientState], GL_COLOR_ARRAY    ;отключаем режим рисования цветов
145
	stdcall [glDisableClientState], GL_VERTEX_ARRAY   ;отключаем режим рисования вершин
146
 
8408 IgorA 147
call [glPopMatrix]
5337 IgorA 148
ret
149
 
150
align 4
151
scale dd 0.8
152
delt_sc dd 0.05
153
angle_z dd 0.0
154
angle_y dd 0.0
155
delt_size dd 3.0
156
 
157
align 4
158
Vertex dd -0.9, -0.9, -0.9, 0.9, 0.9, 0.9, 0.9, -0.9 ;4 вершины (по 2 координаты)
159
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 параметра)
160
 
161
;--------------------------------------------------
162
align 4
8408 IgorA 163
import_tinygl:
5337 IgorA 164
 
165
macro E_LIB n
166
{
167
	n dd sz_#n
168
}
169
include '../export.inc'
170
	dd 0,0
171
macro E_LIB n
172
{
173
	sz_#n db `n,0
174
}
175
include '../export.inc'
176
 
177
;--------------------------------------------------
178
system_path db '/sys/lib/'
179
name_tgl db 'tinygl.obj',0
180
;--------------------------------------------------
181
 
8408 IgorA 182
align 4
5337 IgorA 183
i_end:
8408 IgorA 184
	ctx1 rb 28 ;sizeof.TinyGLContext = 28
185
	cur_dir_path rb 4096
186
	library_path rb 4096
5353 IgorA 187
	rb 4096
5337 IgorA 188
stacktop:
189
mem: