transform = getTransform(controller.showTransform, theta)

        if (controller.shape == SP_TRIANGLE):
            glUniformMatrix4fv(
                glGetUniformLocation(pipeline.shaderProgram, "transform"), 1,
                GL_TRUE, transform)
            pipeline.drawCall(gpuTriangle)

        elif (controller.shape == SP_QUAD):
            glUniformMatrix4fv(
                glGetUniformLocation(pipeline.shaderProgram, "transform"), 1,
                GL_TRUE, transform)
            pipeline.drawCall(gpuQuad)

        elif (controller.shape == SP_CUBE):
            Rx = tr.rotationX(np.pi / 3)
            Ry = tr.rotationY(np.pi / 3)
            transform = tr.matmul([Ry, Rx, transform])
            glUniformMatrix4fv(
                glGetUniformLocation(pipeline.shaderProgram, "transform"), 1,
                GL_TRUE, transform)
            pipeline.drawCall(gpuCube)

        elif (controller.shape == SP_CIRCLE):
            glUniformMatrix4fv(
                glGetUniformLocation(pipeline.shaderProgram, "transform"), 1,
                GL_TRUE, transform)
            pipeline.drawCall(gpuCircle)

        else:
            # This should never happen
Exemple #2
0
            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
        else:
            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)

        # Drawing shapes
        glUseProgram(pipeline.shaderProgram)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "viewPosition"), viewPos[0], viewPos[1], viewPos[2])
        glUniformMatrix4fv(glGetUniformLocation(pipeline.shaderProgram, "view"), 1, GL_TRUE, view)

        glUniformMatrix4fv(glGetUniformLocation(pipeline.shaderProgram, "model"), 1, GL_TRUE, tr.uniformScale(3))
        pipeline.drawCall(gpuSuzanne)

        glUniformMatrix4fv(glGetUniformLocation(pipeline.shaderProgram, "model"), 1, GL_TRUE,
            tr.matmul([
                tr.uniformScale(3),
                tr.rotationX(np.pi/2),
                tr.translate(1.5,-0.25,0)])
        )
        pipeline.drawCall(gpuCarrot)
        
        glUseProgram(mvpPipeline.shaderProgram)
        glUniformMatrix4fv(glGetUniformLocation(mvpPipeline.shaderProgram, "view"), 1, GL_TRUE, view)
        mvpPipeline.drawCall(gpuAxis, GL_LINES)

        # Once the drawing is rendered, buffers are swap so an uncomplete drawing is never seen.
        glfw.swap_buffers(window)

    # freeing GPU memory
    gpuAxis.clear()
    gpuSuzanne.clear()
    gpuCarrot.clear()