コード例 #1
0
    def paintGL(self):
        #print('drawing')
        GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
        now = time.time() - self.startTime
        GL.glLoadIdentity()
        GL.glTranslate(0.0, 0.0, -5.0)
        GL.glScale(2.0, 2.0, 2.0)
        GL.glRotate(1000 * math.sin(now / 10), 0, 1, 0)
        GL.glRotate(1000 * math.cos(now / 10), 1, 0, 0)
        GL.glRotate(100 * math.tan(now / 10), 0, 0, 1)
        GL.glTranslate(-0.5, -0.5, -0.5)

        GL.glEnableClientState(GL.GL_VERTEX_ARRAY)
        GL.glEnableClientState(GL.GL_COLOR_ARRAY)
        GL.glVertexPointerf(self.cubeVtxArray)
        GL.glColorPointerf(self.cubeClrArray)
        GL.glDrawElementsui(GL.GL_QUADS, self.cubeIdxArray)

        GL.glLoadIdentity()
        GL.glBegin(GL.GL_LINES)
        GL.glColor3f(0, 1, 0)

        #draw the grid
        for x in range(50):
            #print(str((x/2)-12.5))
            #horizontal
            GL.glVertex3f(25, -1, ((x / 2) - 12.5))
            GL.glVertex3f(-25, -1, ((x / 2) - 12.5))
            #forward
            GL.glVertex3f(((x / 2) - 12.5), -1, 12.5)
            GL.glVertex3f(((x / 2) - 12.5), -1, -12.5)

        GL.glEnd()
        #draw the sound data
        data = Fourier.fft_abs(self.ear.stream_read())
        GL.glBegin(GL.GL_LINES)
        GL.glColor3f(0, 0, 1)
        #width is the world space horizontal length of the drawing
        width = 2
        #delta is the space in between lines
        delta = width / self.ear.chunk
        for x in range(len(data)):
            GL.glVertex3f((delta * x - width / 2), 0.00001 * data[x] - 5, -5)
            GL.glVertex3f((delta * x - width / 2), -5, -5)
        GL.glEnd()
        #self.drawData()

        GL.glFlush()