;;;;;;;;;;;;;;;;;;;;;;;;; ;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) ))