;;;; png.lisp (in-package #:wheelwork) (defclass/std png (asset texture) ()) (defmethod ensure-loaded ((png png)) (with-slots (width height id wrap-s wrap-t min-filter mag-filter internal-format image-format) png (pngload:with-png-in-static-vector (data (asset-path png) :flip-y t) (setf width (pngload:width data) height (pngload:height data) id (gl:gen-texture)) (gl:bind-texture :texture-2d id) (gl:tex-parameter :texture-2d :texture-wrap-s wrap-s) (gl:tex-parameter :texture-2d :texture-wrap-t wrap-t) (gl:tex-parameter :texture-2d :texture-min-filter min-filter) (gl:tex-parameter :texture-2d :texture-mag-filter mag-filter) (gl:tex-image-2d :texture-2d 0 internal-format width height 0 image-format :unsigned-byte (pngload:data data)) (gl:bind-texture :texture-2d 0) (when (texture-mipmap png) (gl:generate-mipmap :texture-2d)))))