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