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