def __init__(self, gl, v=[], vtf=[], f=[]):
		if not Geometry.solid_shader:
			Geometry.solid_shader = makeProgram(gl, "330 core", [GL_VERTEX_SHADER, GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER],
				open("shaders/solid_shader.glsl").read())

		if not Geometry.wire_shader:
			Geometry.wire_shader = makeProgram(gl, "330 core", [GL_VERTEX_SHADER, GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER],
				open("shaders/wireframe_shader.glsl").read())

		if not Geometry.flat_shader:
			Geometry.flat_shader = makeProgram(gl, "330 core", [GL_VERTEX_SHADER, GL_FRAGMENT_SHADER],
				open("shaders/flat_color_shader.glsl").read())



		self.verts = v
		self.vertToFaces = vtf
		self.faces = f
		self.selected = []
		self.constrained = []


		# Creating the VAO and VBO(s) for mesh
		# 
		self.vao = GLuint(0)
		gl.glGenVertexArrays(1, self.vao)
		gl.glBindVertexArray(self.vao)

		# Index IBO
		idx_array = pygloo.c_array(GLuint, _flatten_list(self.faces))
		self.ibo = GLuint(0)
		self.ibo_size = len(idx_array)
		gl.glGenBuffers(1, self.ibo)
		gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.ibo);
		gl.glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(idx_array), idx_array, GL_STATIC_DRAW);

		# Vertex Position VBO
		self.vbo_pos = GLuint(0)
		gl.glGenBuffers(1, self.vbo_pos)
		gl.glBindVertexArray(0)



		# Creating the VAO(s) for selected/constrained points
		#

		# Selected
		self.vao_selected = GLuint(0)
		gl.glGenVertexArrays(1, self.vao_selected)
		gl.glBindVertexArray(self.vao_selected)

		self.ibo_selected = GLuint(0)
		gl.glGenBuffers(1, self.ibo_selected)

		# Constrained
		self.vao_constrained = GLuint(0)
		gl.glGenVertexArrays(1, self.vao_constrained)
		gl.glBindVertexArray(self.vao_constrained)

		self.ibo_constrained = GLuint(0)
		gl.glGenBuffers(1, self.ibo_constrained)



		# Make the update
		self.update(gl)
Beispiel #2
0
	def load_shader(self, gl, tag, source, shader_types = [GL_VERTEX_SHADER, GL_FRAGMENT_SHADER]):
		prog = makeProgram(gl, "330 core", shader_types, source)
		self.shader_dict[tag] = prog
		print "Added Shader Asset :: tag={t} prog={p}".format(t=tag, p=prog)
    def __init__(self, gl, v=[], vtf=[], f=[]):
        if not Geometry.solid_shader:
            Geometry.solid_shader = makeProgram(
                gl, "330 core",
                [GL_VERTEX_SHADER, GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER],
                open("shaders/solid_shader.glsl").read())

        if not Geometry.wire_shader:
            Geometry.wire_shader = makeProgram(
                gl, "330 core",
                [GL_VERTEX_SHADER, GL_GEOMETRY_SHADER, GL_FRAGMENT_SHADER],
                open("shaders/wireframe_shader.glsl").read())

        if not Geometry.flat_shader:
            Geometry.flat_shader = makeProgram(
                gl, "330 core", [GL_VERTEX_SHADER, GL_FRAGMENT_SHADER],
                open("shaders/flat_color_shader.glsl").read())

        self.verts = v
        self.vertToFaces = vtf
        self.faces = f
        self.selected = []
        self.constrained = []

        # Creating the VAO and VBO(s) for mesh
        #
        self.vao = GLuint(0)
        gl.glGenVertexArrays(1, self.vao)
        gl.glBindVertexArray(self.vao)

        # Index IBO
        idx_array = pygloo.c_array(GLuint, _flatten_list(self.faces))
        self.ibo = GLuint(0)
        self.ibo_size = len(idx_array)
        gl.glGenBuffers(1, self.ibo)
        gl.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.ibo)
        gl.glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(idx_array), idx_array,
                        GL_STATIC_DRAW)

        # Vertex Position VBO
        self.vbo_pos = GLuint(0)
        gl.glGenBuffers(1, self.vbo_pos)
        gl.glBindVertexArray(0)

        # Creating the VAO(s) for selected/constrained points
        #

        # Selected
        self.vao_selected = GLuint(0)
        gl.glGenVertexArrays(1, self.vao_selected)
        gl.glBindVertexArray(self.vao_selected)

        self.ibo_selected = GLuint(0)
        gl.glGenBuffers(1, self.ibo_selected)

        # Constrained
        self.vao_constrained = GLuint(0)
        gl.glGenVertexArrays(1, self.vao_constrained)
        gl.glBindVertexArray(self.vao_constrained)

        self.ibo_constrained = GLuint(0)
        gl.glGenBuffers(1, self.ibo_constrained)

        # Make the update
        self.update(gl)