butwhy added by anonymous on Thu Oct 26 18:31:13 2017

;;;;;;;;;;;;;;;;;;;;;;;;;
;opengl
    
(define a 0)
(define b 0)
(define c 0)
(define d 0)

(define xr 0)
(define yr 0)
(define zr 0)

(define tex 0)
(define data (make-bytevector 1 0))
(define datapointer (->pointer data))

(define simustate (expand-simu 4))
(define simuwidth 0)
(define simuheight 0)


(define vert-source (read-all "s.vert"))
(define frag-source (read-all "s.frag"))

(define rect (make-mesh
              vertices: '(attributes: ((position #:float 2) )
                          initial-elements: ((position . (-1 -1
                                                           1 -1
                                                           1  1
                                                           -1  1)) ))
              indices: '(type: #:ushort
                         initial-elements: (0 1 2
                                            0 2 3))))
(define program (make-parameter #f))

(define (render)
  (check-gl
   (gl:active-texture gl:+texture1+)
   (with-vertex-array (mesh-vao rect)
     (with-texture gl:+texture-2d+ tex
       (print simuwidth " " simuheight)
       (gl:tex-image-2d gl:+texture-2d+ 0 gl:+red+ a simuheight 0 gl:+red+ gl:+unsigned-byte+ datapointer)
       (gl:tex-parameteri gl:+texture-2d+ gl:+texture-wrap-s+ gl:+clamp-to-edge+)
       (gl:tex-parameteri gl:+texture-2d+ gl:+texture-wrap-t+ gl:+clamp-to-edge+)
       (gl:tex-parameteri gl:+texture-2d+ gl:+texture-min-filter+ gl:+nearest+)
       (gl:tex-parameteri gl:+texture-2d+ gl:+texture-mag-filter+ gl:+nearest+)
       (gl:draw-elements-base-vertex (mode->gl (mesh-mode rect))                                                                                                                                                                                                                    
                                     (mesh-n-indices rect)
                                     (type->gl (mesh-index-type rect))
                                     #f 0) ) )
   (gl:active-texture gl:+texture0+) ))

(define gl-init
  (lambda()
    (check-gl
     (gl:init)
     
     (set! vert-shader (make-shader gl:+vertex-shader+ vert-source))
     (set! frag-shader (make-shader gl:+fragment-shader+ frag-source))
     (program (make-program (list vert-shader frag-shader)))
     (gl:use-program (program))
     (gl:program-uniform1i (program) 1 1) ; set location 1 to use tex unit 1
     (mesh-make-vao! rect `((position . ,(gl:get-attrib-location
                                          (program) "position")) ))
     
     (set! tex (gen-texture))
     )))

(define gl-resize
  (lambda (w h)
    (when (zero? h) (set! h 1));whats this for
    (gl:viewport 0 0 w h)
    ))

(define gl-paint
  (lambda()
    (render)
    ))