Package glitter :: Package textures :: Module sampler
[hide private]
[frames] | no frames]

Source Code for Module glitter.textures.sampler

  1  """Sampler class. 
  2   
  3  @todo: Implement getters and setters for C{Sampler.unit}, but take care not to 
  4  confuse any existing bindings on the stack. This problem is very similar to 
  5  rebinding L{buffers<BaseBuffer>} to different targets and should probably be 
  6  handled in a similar way. 
  7   
  8  @author: Stephan Wenger 
  9  @date: 2012-02-29 
 10  """ 
 11   
 12  import glitter.raw as _gl 
 13  from glitter.utils import texture_compare_funcs, texture_compare_modes, texture_min_filters, texture_mag_filters, texture_wrapmodes, ManagedObject, BindableObject 
14 15 -class Sampler(ManagedObject, BindableObject):
16 _generate_id = _gl.glGenSamplers 17 _delete_id = _gl.glDeleteSamplers 18 _db = "samplers" 19 _binding = "sampler_binding" 20 21 compare_funcs = texture_compare_funcs 22 compare_modes = texture_compare_modes 23 min_filters = texture_min_filters 24 mag_filters = texture_mag_filters 25 wrapmodes = texture_wrapmodes 26
27 - def __init__(self, unit, context=None):
28 super(Sampler, self).__init__(context=context) 29 if not 0 <= unit < self._context.max_combined_texture_image_units: 30 raise ValueError("invalid unit: %s" % unit) 31 self._target = unit
32 33 @property
34 - def compare_func(self):
35 _compare_func = _gl.GLint() 36 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_COMPARE_FUNC, _gl.pointer(_compare_func)) 37 return self.compare_funcs[_compare_func.value]
38 39 @compare_func.setter
40 - def compare_func(self, compare_func):
41 _compare_func = _gl.GLint(self.compare_funcs(compare_func)._value) 42 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_COMPARE_FUNC, _gl.pointer(_compare_func))
43 44 @property
45 - def compare_mode(self):
46 _compare_mode = _gl.GLint() 47 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_COMPARE_MODE, _gl.pointer(_compare_mode)) 48 return self.compare_modes[_compare_mode.value]
49 50 @compare_mode.setter
51 - def compare_mode(self, compare_mode):
52 _compare_mode = _gl.GLint(self.compare_modes(compare_mode)._value) 53 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_COMPARE_MODE, _gl.pointer(_compare_mode))
54 55 @property
56 - def lod_bias(self):
57 _lod_bias = _gl.GLfloat() 58 _gl.glGetSamplerParameterfv(self._id, _gl.GL_TEXTURE_LOD_BIAS, _gl.pointer(_lod_bias)) 59 return _lod_bias.value
60 61 @lod_bias.setter
62 - def lod_bias(self, lod_bias):
63 _gl.glSamplerParameterfv(self._id, _gl.GL_TEXTURE_LOD_BIAS, _gl.pointer(_gl.GLfloat(lod_bias)))
64 65 @property
66 - def min_filter(self):
67 _min_filter = _gl.GLint() 68 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_MIN_FILTER, _gl.pointer(_min_filter)) 69 return self.min_filters[_min_filter.value]
70 71 @min_filter.setter
72 - def min_filter(self, min_filter):
73 _min_filter = _gl.GLint(self.min_filters(min_filter)._value) 74 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_MIN_FILTER, _gl.pointer(_min_filter))
75 76 @property
77 - def mag_filter(self):
78 _mag_filter = _gl.GLint() 79 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_MAG_FILTER, _gl.pointer(_mag_filter)) 80 return self.mag_filters[_mag_filter.value]
81 82 @mag_filter.setter
83 - def mag_filter(self, mag_filter):
84 _mag_filter = _gl.GLint(self.mag_filters(mag_filter)._value) 85 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_MAG_FILTER, _gl.pointer(_mag_filter))
86 87 @property
88 - def min_lod(self):
89 _min_lod = _gl.GLint() 90 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_MIN_LOD, _gl.pointer(_min_lod)) 91 return _min_lod.value
92 93 @min_lod.setter
94 - def min_lod(self, min_lod):
95 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_MIN_LOD, _gl.pointer(_gl.GLint(min_lod)))
96 97 @property
98 - def max_lod(self):
99 _max_lod = _gl.GLint() 100 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_MAX_LOD, _gl.pointer(_max_lod)) 101 return _max_lod.value
102 103 @max_lod.setter
104 - def max_lod(self, max_lod):
105 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_MAX_LOD, _gl.pointer(_gl.GLint(max_lod)))
106 107 @property
108 - def wrap_s(self):
109 _wrap_s = _gl.GLint() 110 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_S, _gl.pointer(_wrap_s)) 111 return self.wrapmodes[_wrap_s.value]
112 113 @wrap_s.setter
114 - def wrap_s(self, wrap_s):
115 _wrap_s = _gl.GLint(self.wrapmodes(wrap_s)._value) 116 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_S, _gl.pointer(_wrap_s))
117 118 @property
119 - def wrap_t(self):
120 _wrap_t = _gl.GLint() 121 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_T, _gl.pointer(_wrap_t)) 122 return self.wrapmodes[_wrap_t.value]
123 124 @wrap_t.setter
125 - def wrap_t(self, wrap_t):
126 _wrap_t = _gl.GLint(self.wrapmodes(wrap_t)._value) 127 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_T, _gl.pointer(_wrap_t))
128 129 @property
130 - def wrap_r(self):
131 _wrap_r = _gl.GLint() 132 _gl.glGetSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_R, _gl.pointer(_wrap_r)) 133 return self.wrapmodes[_wrap_r.value]
134 135 @wrap_r.setter
136 - def wrap_r(self, wrap_r):
137 _wrap_r = _gl.GLint(self.wrapmodes(wrap_r)._value) 138 _gl.glSamplerParameteriv(self._id, _gl.GL_TEXTURE_WRAP_R, _gl.pointer(_wrap_r))
139 140 __all__ = ["Sampler"] 141