Subversion Repositories Kolibri OS

Rev

Rev 5278 | Rev 5381 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5278 Rev 5380
1
use32
1
use32
2
	org 0x0
2
	org 0x0
3
	db 'MENUET01'
3
	db 'MENUET01'
4
	dd 0x1
4
	dd 0x1
5
	dd start
5
	dd start
6
	dd i_end
6
	dd i_end
7
	dd mem,stacktop
7
	dd mem,stacktop
8
	dd 0,cur_dir_path
8
	dd 0,cur_dir_path
9
 
9
 
10
include '../../../../../../programs/proc32.inc'
10
include '../../../../../../programs/proc32.inc'
11
include '../../../../../../programs/macros.inc'
11
include '../../../../../../programs/macros.inc'
12
include '../../../../../../programs/develop/libraries/box_lib/load_lib.mac'
12
include '../../../../../../programs/develop/libraries/box_lib/load_lib.mac'
13
include '../../../../../../programs/dll.inc'
13
include '../../../../../../programs/dll.inc'
14
include '../opengl_const.inc'
14
include '../opengl_const.inc'
15
 
15
 
16
@use_library
16
@use_library
17
 
17
 
18
align 4
18
align 4
19
start:
19
start:
20
	load_library name_tgl, cur_dir_path, library_path, system_path, \
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
21
		err_message_found_lib, head_f_l, import_lib_tinygl, err_message_import, head_f_i
22
	cmp eax,-1
22
	cmp eax,-1
23
	jz button.exit
23
	jz button.exit
24
 
24
 
25
	mcall 40,0x27
25
	mcall 40,0x27
26
 
26
 
27
stdcall [kosglMakeCurrent], 10,10,400,350,ctx1
27
stdcall [kosglMakeCurrent], 10,10,400,350,ctx1
28
stdcall [glEnable], GL_DEPTH_TEST
28
stdcall [glEnable], GL_DEPTH_TEST
29
stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
29
stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов
30
stdcall [gluNewQuadric]
30
stdcall [gluNewQuadric]
31
mov [qObj],eax
31
mov [qObj],eax
32
 
32
 
33
stdcall [glClearColor], 0.25,0.25,0.25,0.0
33
stdcall [glClearColor], 0.25,0.25,0.25,0.0
34
stdcall [glShadeModel], GL_SMOOTH
34
stdcall [glShadeModel], GL_SMOOTH
35
 
35
 
36
call draw_3d
36
call draw_3d
37
 
37
 
38
align 4
38
align 4
39
red_win:
39
red_win:
40
	call draw_window
40
	call draw_window
41
 
41
 
42
align 4
42
align 4
43
still:
43
still:
44
	mcall 10
44
	mcall 10
45
	cmp al,1
45
	cmp al,1
46
	jz red_win
46
	jz red_win
47
	cmp al,2
47
	cmp al,2
48
	jz key
48
	jz key
49
	cmp al,3
49
	cmp al,3
50
	jz button
50
	jz button
51
	jmp still
51
	jmp still
52
 
52
 
53
align 4
53
align 4
54
draw_window:
54
draw_window:
55
	pushad
55
	pushad
56
	mcall 12,1
56
	mcall 12,1
57
 
57
 
58
	mov edx,0x33ffffff ;0x73ffffff
58
	mov edx,0x33ffffff ;0x73ffffff
59
	mcall 0,(50 shl 16)+430,(30 shl 16)+400,,,caption
59
	mcall 0,(50 shl 16)+430,(30 shl 16)+400,,,caption
60
	stdcall [kosglSwapBuffers]
60
	stdcall [kosglSwapBuffers]
61
 
61
 
62
	mcall 12,2
62
	mcall 12,2
63
	popad
63
	popad
64
	ret
64
	ret
65
 
65
 
66
align 4
66
align 4
67
key:
67
key:
68
	mcall 2
68
	mcall 2
69
 
69
 
70
	cmp ah,27 ;Esc
70
	cmp ah,27 ;Esc
71
	je button.exit
71
	je button.exit
72
 
72
 
73
	cmp ah,61 ;+
73
	cmp ah,61 ;+
74
	jne @f
74
	jne @f
75
	    fld dword[scale]
75
	    fld dword[scale]
76
	    fadd dword[delt_sc]
76
	    fadd dword[delt_sc]
77
	    fstp dword[scale]
77
	    fstp dword[scale]
78
	    call draw_3d
78
	    call draw_3d
79
	    stdcall [kosglSwapBuffers]
79
	    stdcall [kosglSwapBuffers]
80
	@@:
80
	@@:
81
	cmp ah,45 ;-
81
	cmp ah,45 ;-
82
	jne @f
82
	jne @f
83
	    fld dword[scale]
83
	    fld dword[scale]
84
	    fsub dword[delt_sc]
84
	    fsub dword[delt_sc]
85
	    fstp dword[scale]
85
	    fstp dword[scale]
86
	    call draw_3d
86
	    call draw_3d
87
	    stdcall [kosglSwapBuffers]
87
	    stdcall [kosglSwapBuffers]
88
	@@:
88
	@@:
89
	cmp ah,178 ;Up
89
	cmp ah,178 ;Up
90
	jne @f
90
	jne @f
91
		fld dword[angle_y]
91
		fld dword[angle_y]
92
		fadd dword[delt_size]
92
		fadd dword[delt_size]
93
		fstp dword[angle_y]
93
		fstp dword[angle_y]
94
		call draw_3d
94
		call draw_3d
95
		stdcall [kosglSwapBuffers]
95
		stdcall [kosglSwapBuffers]
96
	@@:
96
	@@:
97
	cmp ah,177 ;Down
97
	cmp ah,177 ;Down
98
	jne @f
98
	jne @f
99
		fld dword[angle_y]
99
		fld dword[angle_y]
100
		fsub dword[delt_size]
100
		fsub dword[delt_size]
101
		fstp dword[angle_y]
101
		fstp dword[angle_y]
102
		call draw_3d
102
		call draw_3d
103
		stdcall [kosglSwapBuffers]
103
		stdcall [kosglSwapBuffers]
104
	@@:
104
	@@:
105
	cmp ah,176 ;Left
105
	cmp ah,176 ;Left
106
	jne @f
106
	jne @f
107
		fld dword[angle_z]
107
		fld dword[angle_z]
108
		fadd dword[delt_size]
108
		fadd dword[delt_size]
109
		fstp dword[angle_z]
109
		fstp dword[angle_z]
110
		call draw_3d
110
		call draw_3d
111
		stdcall [kosglSwapBuffers]
111
		stdcall [kosglSwapBuffers]
112
	@@:
112
	@@:
113
	cmp ah,179 ;Right
113
	cmp ah,179 ;Right
114
	jne @f
114
	jne @f
115
		fld dword[angle_z]
115
		fld dword[angle_z]
116
		fsub dword[delt_size]
116
		fsub dword[delt_size]
117
		fstp dword[angle_z]
117
		fstp dword[angle_z]
118
		call draw_3d
118
		call draw_3d
119
		stdcall [kosglSwapBuffers]
119
		stdcall [kosglSwapBuffers]
120
	@@:
120
	@@:
121
 
121
 
122
	jmp still
122
	jmp still
123
 
123
 
124
align 4
124
align 4
125
button:
125
button:
126
	mcall 17
126
	mcall 17
127
	cmp ah,1
127
	cmp ah,1
128
	jne still
128
	jne still
129
.exit:
129
.exit:
130
	stdcall [gluDeleteQuadric], [qObj]
130
	stdcall [gluDeleteQuadric], [qObj]
131
	mcall -1
131
	mcall -1
132
 
132
 
133
 
133
 
134
align 4
134
align 4
135
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
135
caption db 'Test gluSphere, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0
136
align 4
136
align 4
137
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
137
ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
138
;sizeof.TinyGLContext = 28
138
;sizeof.TinyGLContext = 28
139
 
139
 
140
align 4
140
align 4
141
draw_3d:
141
draw_3d:
142
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
142
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
143
 
143
 
144
stdcall [glPushMatrix]
144
stdcall [glPushMatrix]
145
	call SetLight
145
	call SetLight
146
 
146
 
147
	stdcall [glTranslatef], 0.0,0.0,0.5
147
	stdcall [glTranslatef], 0.0,0.0,0.5
148
	stdcall [glScalef], [scale], [scale], [scale]
148
	stdcall [glScalef], [scale], [scale], [scale]
149
 
149
 
150
	stdcall [glColor3f], 1.0, 1.0, 0.0
150
	stdcall [glColor3f], 1.0, 1.0, 0.0
151
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
151
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
152
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
152
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
153
	stdcall [gluSphere], [qObj], 1.0, 32,32
153
	stdcall [gluSphere], [qObj], 1.0, 32,32
154
 
154
 
155
	stdcall [glColor3f], 1.0, 0.0, 0.0
155
	stdcall [glColor3f], 1.0, 0.0, 0.0
156
	stdcall [glTranslatef], -1.6,0.0,0.0
156
	stdcall [glTranslatef], -1.6,0.0,0.0
157
	stdcall [gluSphere], [qObj], 0.55, 16,16
157
	stdcall [gluSphere], [qObj], 0.55, 16,16
158
 
158
 
159
	stdcall [glColor3f], 0.0, 0.0, 1.0
159
	stdcall [glColor3f], 0.0, 0.0, 1.0
160
	stdcall [glTranslatef], 3.2,0.0,0.0
160
	stdcall [glTranslatef], 3.2,0.0,0.0
161
	stdcall [gluSphere], [qObj], 0.55, 16,16
161
	stdcall [gluSphere], [qObj], 0.55, 16,16
162
stdcall [glPopMatrix]
162
stdcall [glPopMatrix]
163
ret
163
ret
164
 
164
 
165
align 4
165
align 4
166
SetLight:
166
SetLight:
167
    stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
167
    stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
168
    stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
168
    stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
169
 
169
 
170
    stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
170
;    stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
171
    stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
171
;    stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
172
 
172
 
173
	stdcall [glEnable], GL_COLOR_MATERIAL
173
	stdcall [glEnable], GL_COLOR_MATERIAL
174
	stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
174
	stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
175
	stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
175
	stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
176
	stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
176
	stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
177
    stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
177
    stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
178
  
178
  
179
	stdcall [glEnable],GL_LIGHTING
179
	stdcall [glEnable],GL_LIGHTING
180
	stdcall [glEnable],GL_LIGHT0
180
;        stdcall [glEnable],GL_LIGHT0
181
ret
181
ret
182
 
182
 
183
qObj dd 0
183
qObj dd 0
184
 
184
 
185
scale dd 0.4
185
scale dd 0.4
186
delt_sc dd 0.05
186
delt_sc dd 0.05
187
angle_z dd 0.0
187
angle_z dd 0.0
188
angle_y dd 0.0
188
angle_y dd 0.0
189
delt_size dd 3.0
189
delt_size dd 3.0
190
 
190
 
191
light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
191
light_position dd 3.0, 2.0, -10.0, 1.0 ; Расположение источника [0][1][2]
192
	;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
192
	;[3] = (0.0 - бесконечно удаленный источник, 1.0 - источник света на определенном расстоянии)
193
light_dir dd 0.0,0.0,0.0 ;направление лампы
193
light_dir dd 0.0,0.0,0.0 ;направление лампы
194
mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
194
mat_specular dd 0.1, 0.1, 0.1, 1.0 ; Цвет блика
195
mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
195
mat_shininess dd 3.0 ; Размер блика (обратная пропорция)
196
white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
196
white_light dd 0.8, 0.8, 0.8, 1.0 ; Цвет и интенсивность освещения, генерируемого источником
197
lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
197
lmodel_ambient dd 0.2, 0.2, 0.2, 1.0 ; Параметры фонового освещения
198
 
198
 
199
;--------------------------------------------------
199
;--------------------------------------------------
200
align 4
200
align 4
201
import_lib_tinygl:
201
import_lib_tinygl:
202
 
202
 
203
macro E_LIB n
203
macro E_LIB n
204
{
204
{
205
	n dd sz_#n
205
	n dd sz_#n
206
}
206
}
207
include '../export.inc'
207
include '../export.inc'
208
	dd 0,0
208
	dd 0,0
209
macro E_LIB n
209
macro E_LIB n
210
{
210
{
211
	sz_#n db `n,0
211
	sz_#n db `n,0
212
}
212
}
213
include '../export.inc'
213
include '../export.inc'
214
 
214
 
215
;--------------------------------------------------
215
;--------------------------------------------------
216
system_path db '/sys/lib/'
216
system_path db '/sys/lib/'
217
name_tgl db 'tinygl.obj',0
217
name_tgl db 'tinygl.obj',0
218
err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0
218
err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0
219
head_f_i:
219
head_f_i:
220
head_f_l db 'System error',0
220
head_f_l db 'System error',0
221
err_message_import db 'Error on load import library tinygl.obj',0
221
err_message_import db 'Error on load import library tinygl.obj',0
222
;--------------------------------------------------
222
;--------------------------------------------------
223
 
223
 
224
i_end:
224
i_end:
225
	rb 1024
225
	rb 1024
226
stacktop:
226
stacktop:
227
cur_dir_path:
227
cur_dir_path:
228
	rb 4096
228
	rb 4096
229
library_path:
229
library_path:
230
	rb 4096
230
	rb 4096
231
mem:
231
mem: