/examples/opengl_101.scm

http://github.com/digego/extempore · Scheme · 33 lines · 24 code · 3 blank · 6 comment · 0 complexity · ac6e57dd108b2d627d44967067889730 MD5 · raw file

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ; Simplest possible OpenGL example
  4. ;
  5. ;; a trivial opengl draw loop
  6. (definec my-gl-loop
  7. (let ((size 0.01))
  8. (lambda (degree)
  9. (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT))
  10. (glLoadIdentity)
  11. (glTranslated 0.0 -1.0 0.0)
  12. (let ((i:double 0.0))
  13. (dotimes (i 1000.0)
  14. (glTranslated (/ i 2000.0) 0.0 0.0)
  15. (glColor3d (/ i 1500.0) 0.0 1.0)
  16. (glRotated degree (/ i 200000.0) 0.5 0.0)
  17. (glBegin GL_QUADS)
  18. (glVertex2d 0.0 0.0)
  19. (glVertex2d size 0.0)
  20. (glVertex2d size size)
  21. (glVertex2d 0.0 size)
  22. (glEnd))))))
  23. ;; standard impromptu callback
  24. (define opengl-test
  25. (lambda (degree)
  26. (my-gl-loop degree)
  27. (gl:swap-buffers glctx)
  28. (callback (+ (now) 500) 'opengl-test (+ degree .005))))
  29. (define glctx (gl:make-ctx ":0.0" #f 0.0 0.0 1024.0 768.0))
  30. (opengl-test 70.0)