使用OpenGL在Python Qt中绘制许多要点

时间:2017-04-07 15:12:23

标签: python opengl pyqt

使用不同颜色绘制多个点的最简单,最易格式的方法是什么?

现在我执行以下操作:

paintGL(self):

    ...

    glBegin(GL_POINTS)

    for x, y, z, r, g, b in points:
        glColor(r, g, b)
        glVertex3f(x, y, z)

    glEnd()

当为paintGL()中的每一帧绘制它们时,这对于~50k点来说非常慢。我希望能够旋转和缩放云。

我已经看过glDrawElements,glDrawArrays,我也听说过着色器和东西。请指出我正确的方向。

UPDATE2:

我找到了一种方法,这里是:

def init(self):

    ...

    points = np.array(points, dtype=np.float64)
    colors = np.array(colors, dtype=np.float64)

    self.count = len(points)
    self.vbo_points = VBO(points)
    self.vbo_colors = VBO(colors)

def paintGL(self):

    ...

    self.vbo_points.bind()
    glEnableClientState(GL_VERTEX_ARRAY)
    glVertexPointer(3, GL_DOUBLE, 0, self.vbo_points)

    self.vbo_colors.bind()
    glEnableClientState(GL_COLOR_ARRAY)
    glColorPointer(3, GL_DOUBLE, 0, self.vbo_colors)

    glDrawArrays(GL_POINTS, 0, self.count)

0 个答案:

没有答案