Subversion Repositories Kolibri OS

Rev

Rev 5159 | Rev 8069 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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