Subversion Repositories Kolibri OS

Rev

Rev 5187 | 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. ;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 [glBegin],GL_TRIANGLES
  113.  
  114.         stdcall [glColor3f],0.0, 0.0, 1.0
  115.         stdcall [glVertex3f], 0.0,   0.5,   0.1
  116.         stdcall [glVertex3f], 0.475, 0.823, 0.1
  117.         stdcall [glVertex3f], 0.433, 0.25,  0.1
  118.  
  119.         stdcall [glColor3f],0.0, 1.0, 0.0
  120.         stdcall [glVertex3f], 0.5,   0.0,   0.1
  121.         stdcall [glVertex3f], 0.823,-0.475, 0.1
  122.         stdcall [glVertex3f], 0.25, -0.433, 0.1
  123.  
  124.         stdcall [glColor3f],1.0, 0.0, 0.0
  125.         stdcall [glVertex3f], 0.0,  -0.5,   0.1
  126.         stdcall [glVertex3f], -0.475,-0.823,0.1
  127.         stdcall [glVertex3f], -0.433,-0.25, 0.1
  128.  
  129.         stdcall [glVertex3f], -0.5,   0.0,   0.1
  130.         stdcall [glColor3f],1.0, 1.0, 0.0
  131.         stdcall [glVertex3f], -0.823, 0.475, 0.1
  132.         stdcall [glColor3f],1.0, 1.0, 1.0
  133.         stdcall [glVertex3f], -0.25,  0.433, 0.1
  134.  
  135.         stdcall [glEnd]
  136.  
  137. stdcall [glPopMatrix]
  138. ret
  139.  
  140. angle_z dd 15.0
  141. delt_size dd 3.0
  142.  
  143. ;--------------------------------------------------
  144. align 4
  145. import_lib_tinygl:
  146.  
  147. macro E_LIB n
  148. {
  149.         n dd sz_#n
  150. }
  151. include '../export.inc'
  152.         dd 0,0
  153. macro E_LIB n
  154. {
  155.         sz_#n db `n,0
  156. }
  157. include '../export.inc'
  158.  
  159. ;--------------------------------------------------
  160. system_path db '/sys/lib/'
  161. name_tgl db 'tinygl.obj',0
  162. err_message_found_lib db 'Sorry I cannot load library tinygl.obj',0
  163. head_f_i:
  164. head_f_l db 'System error',0
  165. err_message_import db 'Error on load import library tinygl.obj',0
  166. ;--------------------------------------------------
  167.  
  168. i_end:
  169.         rb 1024
  170. stacktop:
  171. cur_dir_path:
  172.         rb 4096
  173. library_path:
  174.         rb 4096
  175. mem: