Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
5171 IgorA 1
use32
8062 IgorA 2
	org 0
5171 IgorA 3
	db 'MENUET01'
8062 IgorA 4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
5171 IgorA 5
 
8062 IgorA 6
include '../../../../../proc32.inc'
7
include '../../../../../macros.inc'
8
include '../../../../../KOSfuncs.inc'
8408 IgorA 9
include '../../../../../load_lib.mac'
8062 IgorA 10
include '../../../../../dll.inc'
5171 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_lib_tinygl
8062 IgorA 18
	cmp eax,SF_TERMINATE_PROCESS
5171 IgorA 19
	jz button.exit
20
 
8062 IgorA 21
	mcall SF_SET_EVENTS_MASK,0x27
5171 IgorA 22
 
23
stdcall [kosglMakeCurrent], 10,10,300,225,ctx1
24
stdcall [glEnable], GL_DEPTH_TEST
25
 
26
stdcall [glGenLists],1
27
mov [obj1],eax
28
stdcall [glNewList],eax,GL_COMPILE
29
;---
30
	stdcall [glColor3f],1.0, 0.0, 0.0
31
	stdcall [glBegin],GL_LINE_LOOP
32
		stdcall [glVertex3f], 0,      0.9, 0.1
33
		stdcall [glVertex3f], 0.636,  0.636, 0.1
34
		stdcall [glVertex3f], 0.9,    0.0, 0.1
35
		stdcall [glVertex3f], 0.636, -0.636, 0.1
36
		stdcall [glVertex3f], 0.0,   -0.9, 0.1
37
		stdcall [glVertex3f], -0.636,-0.636, 0.1
38
		stdcall [glVertex3f], -0.9,   0.0, 0.1
39
		stdcall [glVertex3f], -0.636, 0.636, 0.1
40
	call [glEnd]
41
 
42
	stdcall [glColor3f],0.0, 0.0, 1.0
43
	stdcall [glBegin],GL_LINE_LOOP
44
		stdcall [glVertex3f], 0.0, 1.1, 0.1
45
		stdcall [glVertex3f], 0.778, 0.778, 0.1
46
		stdcall [glVertex3f], 2.1, 0.0, 0.1
47
		stdcall [glVertex3f], 0.778, -0.778, 0.1
48
		stdcall [glVertex3f], 0.0, -1.1, 0.1
49
		stdcall [glVertex3f], -0.778, -0.778, 0.1
50
		stdcall [glVertex3f], -2.1, 0.0, 0.1
51
		stdcall [glVertex3f], -0.778, 0.778, 0.1
52
	call [glEnd]
53
;---
54
call [glEndList]
55
 
56
call draw_3d
57
 
58
align 4
59
red_win:
60
	call draw_window
61
 
8062 IgorA 62
align 16
5171 IgorA 63
still:
8069 IgorA 64
	mcall SF_WAIT_EVENT
5171 IgorA 65
	cmp al,1
66
	jz red_win
67
	cmp al,2
68
	jz key
69
	cmp al,3
70
	jz button
71
	jmp still
72
 
73
align 4
74
draw_window:
75
	pushad
8062 IgorA 76
	mcall SF_REDRAW,SSF_BEGIN_DRAW
5171 IgorA 77
 
78
	mov edx,0x33ffffff ;0x73ffffff
8062 IgorA 79
	mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
80
	call [kosglSwapBuffers]
5171 IgorA 81
 
8062 IgorA 82
	mcall SF_REDRAW,SSF_END_DRAW
5171 IgorA 83
	popad
84
	ret
85
 
86
align 4
87
key:
8062 IgorA 88
	mcall SF_GET_KEY
5171 IgorA 89
 
90
	cmp ah,27 ;Esc
91
	je button.exit
92
 
93
	;178 ;Up
94
	;177 ;Down
95
	cmp ah,176 ;Left
96
	jne @f
97
		fld dword[angle_z]
98
		fadd dword[delt_size]
99
		fstp dword[angle_z]
100
		call draw_3d
8062 IgorA 101
		call [kosglSwapBuffers]
8069 IgorA 102
		jmp still
5171 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
8062 IgorA 110
		call [kosglSwapBuffers]
8069 IgorA 111
		;jmp still
5171 IgorA 112
	@@:
113
 
114
	jmp still
115
 
116
align 4
117
button:
8062 IgorA 118
	mcall SF_GET_BUTTON
5171 IgorA 119
	cmp ah,1
120
	jne still
121
.exit:
8062 IgorA 122
	mcall SF_TERMINATE_PROCESS
5171 IgorA 123
 
124
 
125
align 4
126
caption db 'Test tinygl library, [Esc] - exit, [<-] and [->] - rotate',0
127
 
128
align 4
129
draw_3d:
130
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
131
 
8062 IgorA 132
call [glPushMatrix]
5171 IgorA 133
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
134
	stdcall [glScalef], 0.3,0.3,0.3
135
 
136
	stdcall [glCallList],[obj1]
137
 
8069 IgorA 138
call [glPopMatrix]
5171 IgorA 139
ret
140
 
141
align 4
142
angle_z dd 0.0
143
delt_size dd 3.0
144
obj1 dd ?
145
 
146
;--------------------------------------------------
147
align 4
148
import_lib_tinygl:
149
 
150
macro E_LIB n
151
{
152
	n dd sz_#n
153
}
154
include '../export.inc'
155
	dd 0,0
156
macro E_LIB n
157
{
158
	sz_#n db `n,0
159
}
160
include '../export.inc'
161
 
162
;--------------------------------------------------
163
system_path db '/sys/lib/'
164
name_tgl db 'tinygl.obj',0
165
;--------------------------------------------------
166
 
8062 IgorA 167
align 16
5171 IgorA 168
i_end:
8408 IgorA 169
ctx1 rb 28 ;TinyGLContext or KOSGLContext
8062 IgorA 170
;sizeof.TinyGLContext = 28
8408 IgorA 171
cur_dir_path rb 4096
172
library_path rb 4096
5171 IgorA 173
	rb 1024
174
stacktop:
175
mem: