def draw(self, mode=gl.GL_TRIANGLES, indices=None): #first=0, count=None): """ Draw using the specified mode & indices. :param gl.GLEnum mode: One of * GL_POINTS * GL_LINES * GL_LINE_STRIP * GL_LINE_LOOP, * GL_TRIANGLES * GL_TRIANGLE_STRIP * GL_TRIANGLE_FAN :param IndexBuffer|None indices: Vertex indices to be drawn. If none given, everything is drawn. """ self.activate() attributes = self._attributes.values() # Get buffer size first attribute # We need more tests here # - do we have at least 1 attribute ? # - does all attributes report same count ? # count = (count or attributes[0].size) - first if isinstance(indices, IndexBuffer): indices.activate() gltypes = { np.dtype(np.uint8): gl.GL_UNSIGNED_BYTE, np.dtype(np.uint16): gl.GL_UNSIGNED_SHORT, np.dtype(np.uint32): gl.GL_UNSIGNED_INT } gl.glDrawElements(mode, indices.size, gltypes[indices.dtype], None) indices.deactivate() else: first = 0 # count = (self._count or attributes[0].size) - first count = len(tuple(attributes)[0]) gl.glDrawArrays(mode, first, count) gl.glBindBuffer(gl.GL_ARRAY_BUFFER, 0) self.deactivate()
def draw(self, mode=gl.GL_TRIANGLES, indices=None): # first=0, count=None): """ Draw the attribute arrays in the specified mode. Parameters ---------- mode : GL_ENUM GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN first : int The starting vertex index in the vertex array. Default 0. count : int The number of vertices to draw. Default all. """ self.activate() attributes = self._attributes.values() # Get buffer size first attribute # We need more tests here # - do we have at least 1 attribute ? # - does all attributes report same count ? # count = (count or attributes[0].size) - first if isinstance(indices, IndexBuffer): indices.activate() gltypes = { np.dtype(np.uint8): gl.GL_UNSIGNED_BYTE, np.dtype(np.uint16): gl.GL_UNSIGNED_SHORT, np.dtype(np.uint32): gl.GL_UNSIGNED_INT, } gl.glDrawElements(mode, indices.size, gltypes[indices.dtype], None) indices.deactivate() else: first = 0 # count = (self._count or attributes[0].size) - first count = len(tuple(attributes)[0]) gl.glDrawArrays(mode, first, count) gl.glBindBuffer(gl.GL_ARRAY_BUFFER, 0) self.deactivate()
def draw(self, mode = gl.GL_TRIANGLES, indices=None): #first=0, count=None): """ Draw using the specified mode & indices. :param gl.GLEnum mode: One of * GL_POINTS * GL_LINES * GL_LINE_STRIP * GL_LINE_LOOP, * GL_TRIANGLES * GL_TRIANGLE_STRIP * GL_TRIANGLE_FAN :param IndexBuffer|None indices: Vertex indices to be drawn. If none given, everything is drawn. """ self.activate() attributes = self._attributes.values() # Get buffer size first attribute # We need more tests here # - do we have at least 1 attribute ? # - does all attributes report same count ? # count = (count or attributes[0].size) - first if isinstance(indices, IndexBuffer): indices.activate() gltypes = { np.dtype(np.uint8) : gl.GL_UNSIGNED_BYTE, np.dtype(np.uint16): gl.GL_UNSIGNED_SHORT, np.dtype(np.uint32): gl.GL_UNSIGNED_INT } gl.glDrawElements(mode, indices.size, gltypes[indices.dtype], None) indices.deactivate() else: first = 0 # count = (self._count or attributes[0].size) - first count = len(tuple(attributes)[0]) gl.glDrawArrays(mode, first, count) gl.glBindBuffer( gl.GL_ARRAY_BUFFER, 0 ) self.deactivate()
def draw(self, mode = gl.GL_TRIANGLES, indices=None): #first=0, count=None): """ Draw the attribute arrays in the specified mode. Parameters ---------- mode : GL_ENUM GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN first : int The starting vertex index in the vertex array. Default 0. count : int The number of vertices to draw. Default all. """ self.activate() attributes = self._attributes.values() # Get buffer size first attribute # We need more tests here # - do we have at least 1 attribute ? # - does all attributes report same count ? # count = (count or attributes[0].size) - first if isinstance(indices, IndexBuffer): indices.activate() gltypes = { np.dtype(np.uint8) : gl.GL_UNSIGNED_BYTE, np.dtype(np.uint16): gl.GL_UNSIGNED_SHORT, np.dtype(np.uint32): gl.GL_UNSIGNED_INT } gl.glDrawElements(mode, indices.size, gltypes[indices.dtype], None) indices.deactivate() else: first = 0 # count = (self._count or attributes[0].size) - first count = len(attributes[0]) gl.glDrawArrays(mode, first, count) gl.glBindBuffer( gl.GL_ARRAY_BUFFER, 0 ) self.deactivate()