Subversion Repositories Kolibri OS

Rev

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