Advertisement
Guest User

Untitled

a guest
Jul 27th, 2012
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. ; ----------------------------------------------------------------------------
  2. ; triangle.asm
  3. ;
  4. ; A very simple *Linux* opengl application using the glut library. it
  5. ; draws a nicely colored triangle in a top-level application window.
  6. ; Version of numit_or: numit_or@cantv.net
  7. ;
  8. ; Compile with:
  9. ; nasm -felf triangle.asm -o triangle.o
  10. ; gcc triangle.o -o triangle -L/usr/X11R6/lib -lGL -lglut -lglu
  11. ;
  12. ; you can find nasm in:
  13. ; http://nasm.sourceforge.net/
  14. ;
  15. ; ----------------------------------------------------------------------------
  16. ;
  17. ; libGL is in
  18. ; libMesaGL1 pack (Mandrake)
  19. ; mesag3 - mesag-dev - mesa-common-dev packs (Debian)
  20. ; libglut and libGLU are in:
  21. ; libMesaglut pack (Mandrake)
  22. ; freeglut3 - freeglut3-dev - libglut3 - libglut3-dev (Debian)
  23. ;
  24. ; ----------------------------------------------------------------------------
  25. global main
  26. extern glClear
  27. extern glBegin
  28. extern glEnd
  29. extern glColor3f
  30. extern glVertex3f
  31. extern glFlush
  32. extern glutInit
  33. extern glutInitDisplayMode
  34. extern glutInitWindowPosition
  35. extern glutInitWindowSize
  36. extern glutCreateWindow
  37. extern glutDisplayFunc
  38. extern glutMainLoop
  39.  
  40. GL_COLOR_BUFFER_BIT equ 16384
  41. GL_POLYGON equ 9
  42.  
  43. section .data
  44. title db 'A Simple Triangle', 0
  45. zero dd 0.0
  46. one dd 1.0
  47. half dd 0.5
  48. neghalf dd -0.5
  49.  
  50. section .text
  51. display:
  52. mov rdi, GL_COLOR_BUFFER_BIT
  53. call glClear ; glClear(GL_COLOR_BUFFER_BIT)
  54. mov rdi, GL_POLYGON
  55. call glBegin ; glBegin(GL_POLYGON)
  56. movss xmm0, [zero]
  57. movss xmm1, [zero]
  58. movss xmm2, [one]
  59. call glColor3f ; glColor3f(1, 0, 0)
  60. movss xmm0, [zero]
  61. movss xmm1, [neghalf]
  62. movss xmm2, [neghalf]
  63. call glVertex3f ; glVertex(-.5, -.5, 0)
  64. movss xmm0, [zero]
  65. movss xmm1, [one]
  66. movss xmm2, [zero]
  67. call glColor3f ; glColor3f(0, 1, 0)
  68. movss xmm0, [zero]
  69. movss xmm1, [neghalf]
  70. movss xmm2, [half]
  71. call glVertex3f ; glVertex(.5, -.5, 0)
  72. movss xmm0, [one]
  73. movss xmm1, [zero]
  74. movss xmm2, [zero]
  75. call glColor3f ; glColor3f(0, 0, 1)
  76. movss xmm0, [zero]
  77. movss xmm1, [half]
  78. movss xmm2, [zero]
  79. call glVertex3f ; glVertex(0, .5, 0)
  80. call glEnd ; glEnd()
  81. call glFlush ; glFlush()
  82. ret
  83.  
  84. main:
  85. mov rsi, rcx
  86. call glutInit
  87. mov rsi, 0
  88. call glutInitDisplayMode
  89. mov rsi, 100
  90. mov rdi, 100
  91. call glutInitWindowPosition
  92. mov rdi, 400
  93. mov rsi, 300
  94. call glutInitWindowSize
  95. mov rdi, title
  96. call glutCreateWindow
  97. mov rdi, display
  98. call glutDisplayFunc
  99. call glutMainLoop
  100. leave
  101. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement