Ejemplo n.º 1
0
	def __init__(self, type, source):
		self.shader = gl2.glCreateShader(type)
		if self.shader == 0:
			raise Exception("unable to create shader")

		source_ptr = ctypes.c_char_p(source)
		source_ptr = ctypes.cast(ctypes.pointer(source_ptr), ctypes.POINTER(ctypes.POINTER(ctypes.c_char)))
		gl2.glShaderSource(self.shader, 1, source_ptr, None)
		gl2.glCompileShader(self.shader)

		compiled = ctypes.c_int()
		gl2.glGetShaderiv(self.shader, gl2.GL_COMPILE_STATUS, ctypes.byref(compiled))

		if not compiled:
			info_len = ctypes.c_int()
			gl2.glGetShaderiv(self.shader, gl2.GL_INFO_LOG_LENGTH, ctypes.byref(info_len))

			if info_len.value > 0:
				info = ctypes.create_string_buffer(info_len.value)
				gl2.glGetShaderInfoLog(self.shader, info_len, None, info)
				gl2.glDeleteShader(self.shader)
				raise Exception(info.value)
Ejemplo n.º 2
0
	def __del__(self):
		gl2.glDeleteShader(self.shader)