Subversion Repositories Kolibri OS

Rev

Rev 5189 | 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. stdcall [glShadeModel],GL_FLAT
  31.  
  32. call draw_3d
  33.  
  34. align 4
  35. red_win:
  36.         call draw_window
  37.  
  38. align 4
  39. still:
  40.         mcall 10
  41.         cmp al,1
  42.         jz red_win
  43.         cmp al,2
  44.         jz key
  45.         cmp al,3
  46.         jz button
  47.         jmp still
  48.  
  49. align 4
  50. draw_window:
  51.         pushad
  52.         mcall 12,1
  53.  
  54.         mov edx,0x33ffffff ;0x73ffffff
  55.         mcall 0,(50 shl 16)+330,(30 shl 16)+275,,,caption
  56.         stdcall [kosglSwapBuffers]
  57.  
  58.         mcall 12,2
  59.         popad
  60.         ret
  61.  
  62. align 4
  63. key:
  64.         mcall 2
  65.  
  66.         cmp ah,27 ;Esc
  67.         je button.exit
  68.  
  69.         ;178 ;Up
  70.         ;177 ;Down
  71.         cmp ah,176 ;Left
  72.         jne @f
  73.                 fld dword[angle_z]
  74.                 fadd dword[delt_size]
  75.                 fstp dword[angle_z]
  76.                 call draw_3d
  77.                 stdcall [kosglSwapBuffers]
  78.         @@:
  79.         cmp ah,179 ;Right
  80.         jne @f
  81.                 fld dword[angle_z]
  82.                 fsub dword[delt_size]
  83.                 fstp dword[angle_z]
  84.                 call draw_3d
  85.                 stdcall [kosglSwapBuffers]
  86.         @@:
  87.  
  88.         jmp still
  89.  
  90. align 4
  91. button:
  92.         mcall 17
  93.         cmp ah,1
  94.         jne still
  95. .exit:
  96.         mcall -1
  97.  
  98.  
  99. align 4
  100. caption db 'Test tinygl library, [Esc] - exit, [<-] and [->] - rotate',0
  101. align 4
  102. ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext
  103. ;sizeof.TinyGLContext = 28
  104.  
  105. align 4
  106. draw_3d:
  107. stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины
  108.  
  109. stdcall [glPushMatrix]
  110.         stdcall [glRotatef], [angle_z],0.0,0.0,1.0
  111.  
  112. stdcall [glColor3f],0.0, 0.0, 1.0
  113.         stdcall [glBegin],GL_LINE_LOOP
  114.         stdcall [glVertex3f], 0.0,    0.5, 0.3
  115.         stdcall [glVertex3f], 0.354,  0.354, 0.3
  116.         stdcall [glVertex3f], 0.5,    0.0, 0.3
  117.         stdcall [glEnd]
  118. ;stdcall [glColor3f],1.0, 1.0, 0.0
  119.         stdcall [glBegin],GL_LINE_LOOP
  120.         stdcall [glVertex3f], 0.354, -0.354, 0.3
  121.         stdcall [glVertex3f], 0.0,   -0.5, 0.3
  122.         stdcall [glVertex3f], -0.354,-0.354, 0.3
  123.         stdcall [glEnd]
  124.  
  125.         stdcall [glColor3f],1.0, 0.0, 0.0
  126.         stdcall [glBegin],GL_TRIANGLES
  127.         stdcall [glVertex3f], 0.0,    0.5, 0.1
  128.         stdcall [glVertex3f], 0.354,  0.354, 0.1
  129.         stdcall [glVertex3f], 0.5,    0.0, 0.1
  130. stdcall [glColor3f],1.0, 1.0, 0.0
  131.         stdcall [glVertex3f], 0.354, -0.354, 0.1
  132.         stdcall [glVertex3f], 0.0,   -0.5, 0.1
  133.         stdcall [glVertex3f], -0.354,-0.354, 0.1
  134.         stdcall [glEnd]
  135.  
  136. stdcall [glPopMatrix]
  137. ret
  138.  
  139. angle_z dd 15.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: