summaryrefslogtreecommitdiff
path: root/src/sampler.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sampler.lisp')
-rw-r--r--src/sampler.lisp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/sampler.lisp b/src/sampler.lisp
new file mode 100644
index 0000000..5521ed7
--- /dev/null
+++ b/src/sampler.lisp
@@ -0,0 +1,27 @@
+(in-package #:ocl)
+
+(defun create-sampler-with-properties (context &key (normalized-coords-p t)
+ (addressing-mode :address-clamp)
+ (filter-mode :filter-nearest))
+ (let ((properties `(:sampler-normalized-coords ,normalized-coords-p
+ :sampler-addressing-mode ,addressing-mode
+ :sampler-filter-mode ,filter-mode
+ 0)))
+ (with-foreign-sequence (c-properties properties 'cl-sampler-properties)
+ (check-error-arg (%create-sampler-with-properties context sampler-properties)))))
+
+(defun retain-sampler (sampler)
+ (check-error (%retain-sampler sampler)))
+
+(defun release-sampler (sampler)
+ (check-error (%release-sampler sampler)))
+
+(defparameter +sampler-info-type-alist+
+ '((:sampler-reference-count . cl-uint)
+ (:sampler-context . cl-context)
+ (:sampler-normalized-coords . cl-bool)
+ (:sampler-addressing-mode . cl-addressing-mode)
+ (:sampler-filter-mode . cl-filter-mode)
+ (:sampler-properties . (:pointer cl-sampler-properties))))
+
+(wrap-get-info-function get-sampler-info %get-sampler-info +sampler-info-type-alist+)