summaryrefslogtreecommitdiff
path: root/src/sampler.lisp
blob: 5521ed7221b3387f659e4fdedb5248ee6b1388f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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+)