MCPcopy
hub / github.com/zju3dv/4K4D / render

Method render

easyvolcap/utils/gl_utils.py:324–354  ·  view source on GitHub ↗
(self, camera: Camera)

Source from the content-addressed store, hash-verified

322 self.render(camera)
323
324 def render(self, camera: Camera):
325 if not self.visible: return
326
327 # For point rendering
328 if self.render_type == Mesh.RenderType.POINTS:
329 gl.glUseProgram(self.point_program)
330 self.use_gl_program(self.point_program)
331 else:
332 gl.glUseProgram(self.mesh_program)
333 self.use_gl_program(self.mesh_program)
334
335 self.upload_gl_uniforms(camera)
336 gl.glBindVertexArray(self.vao)
337
338 if self.render_type == Mesh.RenderType.POINTS:
339 gl.glDrawArrays(gl.GL_POINTS, 0, len(self.verts)) # number of vertices
340 elif self.render_type == Mesh.RenderType.LINES:
341 gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ebo)
342 gl.glDrawElements(gl.GL_LINES, len(self.faces) * self.face_size, gl.GL_UNSIGNED_INT, ctypes.c_void_p(0)) # number of indices
343 elif self.render_type == Mesh.RenderType.TRIS:
344 gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ebo)
345 gl.glDrawElements(gl.GL_TRIANGLES, len(self.faces) * self.face_size, gl.GL_UNSIGNED_INT, ctypes.c_void_p(0)) # number of indices
346 elif self.render_type == Mesh.RenderType.QUADS:
347 gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ebo)
348 gl.glDrawElements(gl.GL_QUADS, len(self.faces) * self.face_size, gl.GL_UNSIGNED_INT, ctypes.c_void_p(0)) # number of indices
349 elif self.render_type == Mesh.RenderType.STRIPS:
350 gl.glDrawArrays(gl.GL_TRIANGLE_STRIP, 0, len(self.verts))
351 else:
352 raise NotImplementedError
353
354 gl.glBindVertexArray(0)
355
356 def use_gl_program(self, program: shaders.ShaderProgram):
357 use_gl_program(program)

Callers 5

offscreen_renderMethod · 0.95
test_gl_mesh_rastFunction · 0.95
renderMethod · 0.45
renderMethod · 0.45

Calls 2

use_gl_programMethod · 0.95
upload_gl_uniformsMethod · 0.95

Tested by 2

test_gl_mesh_rastFunction · 0.76