コード例 #1
0
def on_draw(dt):
    global phi, theta, time

    time += dt
    window.clear()

    surface['data']

    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    surface["color"] = 1, 1, 1, 1
    surface.draw(gl.GL_TRIANGLES, s_indices)

    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    surface["color"] = 0, 0, 0, 1
    surface.draw(gl.GL_LINE_LOOP, b_indices)
    gl.glDepthMask(gl.GL_TRUE)

    model = surface['transform']['model'].reshape(4, 4)
    view = surface['transform']['view'].reshape(4, 4)
    surface['view'] = view
    surface['model'] = model
    surface['normal'] = np.array(np.matrix(np.dot(view, model)).I.T)
コード例 #2
0
def on_draw(dt):
    window.clear(color=C0)

    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)

    # Transparent surfaces

    # Pass 1: accumulation
    quads["pass"] = 0
    framebuffer.color = accumulation
    framebuffer.activate()
    gl.glBlendFunc(gl.GL_ONE, gl.GL_ONE)
    window.clear(color=(0, 0, 0, 0))
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()

    # Pass 2: revealage
    quads["pass"] = 1
    framebuffer.color = revealage
    framebuffer.activate()
    gl.glBlendFunc(gl.GL_ZERO, gl.GL_ONE_MINUS_SRC_COLOR)
    window.clear(color=(1, 1, 1, 1))
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()

    # Compositing
    gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
    post.draw(gl.GL_TRIANGLE_STRIP)
コード例 #3
0
ファイル: geometry-surface.py プロジェクト: aimoaimo/glumpy
def on_draw(dt):
    global phi, theta, time

    time += dt
    window.clear()

    surface['data']

    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    surface["color"] = 1,1,1,1
    surface.draw(gl.GL_TRIANGLES, s_indices)

    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    surface["color"] = 0,0,0,1
    surface.draw(gl.GL_LINE_LOOP, b_indices)
    gl.glDepthMask(gl.GL_TRUE)

    model = surface['transform']['model'].reshape(4,4)
    view  = surface['transform']['view'].reshape(4,4)
    surface['view']  = view
    surface['model'] = model
    surface['normal'] = np.array(np.matrix(np.dot(view, model)).I.T)
コード例 #4
0
def on_draw(dt):
    # index
    global k
    V["a_position"][:-8, :] = deforms[k]

    program['u_model'] = mats[k]
    k = (k + 1) % n_deforms

    window.clear()
    # mesh
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    program['u_color'] = 1, 1, 1, 1
    program.draw(gl.GL_TRIANGLES, tri_idx)

    # bb
    if args.no_rigid:
        program.draw(gl.GL_LINES, bb_idx)

    # outlines
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    program['u_color'] = 0, 0, 0, 1
    program.draw(gl.GL_LINES, edge_idx)
    gl.glDepthMask(gl.GL_TRUE)
コード例 #5
0
ファイル: commented-oit.py プロジェクト: WhiteSymmetry/glumpy
def on_draw(dt):
    # Clear depth and color buffers
    gl.glClearColor(*C0)
    gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
            
    # Opaque objects rendering
    gl.glDepthMask(gl.GL_TRUE)
    gl.glDisable(gl.GL_BLEND)
    
    # Transparent objects rendering
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)
    framebuffer.activate()
    gl.glClearColor(0,0,0,1)
    gl.glClear(gl.GL_COLOR_BUFFER_BIT)
    
    window.clear(color=(0,0,0,1))
    gl.glBlendFuncSeparate(gl.GL_ONE,  gl.GL_ONE,
                           gl.GL_ZERO, gl.GL_ONE_MINUS_SRC_ALPHA)
    scene.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()
    
    # Compositing
    gl.glBlendFunc(gl.GL_ONE_MINUS_SRC_ALPHA, gl.GL_SRC_ALPHA)
    compose.draw(gl.GL_TRIANGLE_STRIP)
コード例 #6
0
ファイル: oit-multipass.py プロジェクト: WhiteSymmetry/glumpy
def on_draw(dt):
    window.clear(color=C0)
    
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)

    # Transparent surfaces

    # Pass 1: accumulation
    quads["pass"] = 0
    framebuffer.color = accumulation
    framebuffer.activate()
    gl.glBlendFunc(gl.GL_ONE,  gl.GL_ONE)
    window.clear(color=(0,0,0,0))
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()

    # Pass 2: revealage
    quads["pass"] = 1
    framebuffer.color = revealage
    framebuffer.activate()
    gl.glBlendFunc(gl.GL_ZERO, gl.GL_ONE_MINUS_SRC_COLOR)
    window.clear(color=(1,1,1,1))
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()
    
    # Compositing
    gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
    post.draw(gl.GL_TRIANGLE_STRIP)
コード例 #7
0
def on_draw(dt):
    global phi, theta, duration

    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, I)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, O)
    gl.glDepthMask(gl.GL_TRUE)

    # Rotate cube
    theta += 1.0  # degrees
    phi += -1.0  # degrees
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 0, 1)
    glm.rotate(model, phi, 0, 1, 0)
    cube['u_model'] = model
コード例 #8
0
def on_draw(dt):
    # Clear depth and color buffers
    gl.glClearColor(*C0)
    gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)

    # Opaque objects rendering
    gl.glDepthMask(gl.GL_TRUE)
    gl.glDisable(gl.GL_BLEND)

    # Transparent objects rendering
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)
    framebuffer.activate()
    gl.glClearColor(0, 0, 0, 1)
    gl.glClear(gl.GL_COLOR_BUFFER_BIT)

    window.clear(color=(0, 0, 0, 1))
    gl.glBlendFuncSeparate(gl.GL_ONE, gl.GL_ONE, gl.GL_ZERO,
                           gl.GL_ONE_MINUS_SRC_ALPHA)
    scene.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()

    # Compositing
    gl.glBlendFunc(gl.GL_ONE_MINUS_SRC_ALPHA, gl.GL_SRC_ALPHA)
    compose.draw(gl.GL_TRIANGLE_STRIP)
コード例 #9
0
ファイル: game.py プロジェクト: hgjfkdls/GameProject
def on_draw(dt):
    global phi, theta

    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, faces)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)

    # Make cube rotate
    theta += 0.5  # degrees
    phi += 0.5  # degrees
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 0, 1)
    glm.rotate(model, phi, 0, 1, 0)
    transform['model'] = model
コード例 #10
0
def on_draw(dt):
    global phi, theta, duration

    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, I)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, O)
    gl.glDepthMask(gl.GL_TRUE)

    # Rotate cube
    theta += 0.5 # degrees
    phi += 0.5 # degrees
    view = cube['u_view'].reshape(4,4)
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 0, 1)
    glm.rotate(model, phi, 0, 1, 0)
    cube['u_model'] = model
    cube['u_normal'] = np.array(np.matrix(np.dot(view, model)).I.T)
コード例 #11
0
ファイル: transform-pvm.py プロジェクト: mabl/glumpy
def on_draw(dt):
    global phi, theta

    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, faces)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)

    # Make cube rotate
    theta += 0.5 # degrees
    phi += 0.5 # degrees
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 0, 1)
    glm.rotate(model, phi, 0, 1, 0)
    cube['model'] = model
コード例 #12
0
def on_draw(dt):
    global phi, theta, duration
    window.clear()
    gl.glDepthMask(gl.GL_FALSE)
    spiral.draw(gl.GL_TRIANGLE_STRIP)
    theta += 1  # degrees
    phi += 2  # degrees
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 1, 0)
    glm.rotate(model, phi, 1, 0, 0)
    spiral['model'] = model
def on_draw(dt):

    window.clear()

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)
コード例 #14
0
    def on_draw(dt):
        global phi, theta

        # Phi and Theta are the cube rotation paramters
        window.clear()

        lock.acquire()
        try:
            # Disable depth of OpenGL to update background tecture
            gl.glDisable(gl.GL_DEPTH_TEST)

            quad.draw(gl.GL_TRIANGLE_STRIP)

            # R-enable depth
            gl.glEnable(gl.GL_DEPTH_TEST)

            # Color of path
            path["u_color"] = 0, 1, 1
            # Filled path
            path.draw(gl.GL_TRIANGLE_STRIP)
            # Mask depth
            gl.glDepthMask(gl.GL_FALSE)
            # Color of edge lines of path
            path["u_color"] = 0, 0, 0
            # Width of edge lines
            gl.glLineWidth(10.0)
            # Draw edge lines with index buffer bline_I
            path.draw(gl.GL_LINES, bline_I)
            # Reset line width
            gl.glLineWidth(1.0)
            gl.glDepthMask(gl.GL_TRUE)

            # Define the model matrix with updated rotation
            model = np.eye(4, dtype=np.float32)
            glm.rotate(model, theta, 0, 0, 1)
            glm.rotate(model, phi, 0, 1, 0)

            for obj in bag.values():
                obj["u_color"] = 1, 0, 0

                # Filled cube
                obj.draw(gl.GL_TRIANGLES, I)

                # Another method to disable depth, instead of disabling it, mask it
                gl.glDepthMask(gl.GL_FALSE)
                # Black color for edge lines of cube
                obj["u_color"] = 0, 0, 0
                # Draw the edge lines with the given index buffer
                obj.draw(gl.GL_LINES, O)
                # Unmask OpenGL depth aparamter
                gl.glDepthMask(gl.GL_TRUE)

                # Model matrix is used to define orientation ,in this case, used to rotate cube
                obj["model"] = model

            # Update cube rotations
            theta += 2.0  # degrees
            phi += 2.0  # degrees
        finally:
            lock.release()
コード例 #15
0
def on_draw(dt):
    window.clear()
    gl.glDepthMask(gl.GL_FALSE)

    curve["color"] = 0.75, 0.75, 0.75
    curve["thickness"] = 64
    curve.draw(gl.GL_TRIANGLE_STRIP)

    curve["color"] = 0.0, 0.0, 0.0
    curve["thickness"] = 1.5
    curve.draw(gl.GL_TRIANGLE_STRIP)

    points.draw(gl.GL_POINTS)

    gl.glDepthMask(gl.GL_TRUE)
コード例 #16
0
def on_draw(dt):
    window.clear()

    # Cells
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cells.draw()

    # Cell outlines
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    outlines.draw()
    gl.glDepthMask(gl.GL_TRUE)
コード例 #17
0
ファイル: spherical-voronoi.py プロジェクト: drufat/glumpy
def on_draw(dt):
    window.clear()

    # Cells
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cells.draw()

    # Cell outlines
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    outlines.draw()
    gl.glDepthMask(gl.GL_TRUE)
コード例 #18
0
ファイル: transform-trackball.py プロジェクト: jk34/glumpy
def on_draw(dt):
    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, faces)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)
コード例 #19
0
def on_draw(dt):
    window.clear(color=C0)
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)

    # Transparent surfaces
    framebuffer.activate()
    window.clear(color=(0, 0, 0, 1))
    gl.glBlendFuncSeparate(gl.GL_ONE, gl.GL_ONE, gl.GL_ZERO,
                           gl.GL_ONE_MINUS_SRC_ALPHA)
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()

    # Compositing
    gl.glBlendFunc(gl.GL_ONE_MINUS_SRC_ALPHA, gl.GL_SRC_ALPHA)
    gl.glEnable(gl.GL_BLEND)
    post.draw(gl.GL_TRIANGLE_STRIP)
コード例 #20
0
ファイル: oit.py プロジェクト: jk34/glumpy
def on_draw(dt):
    window.clear(color=C0)
    gl.glDepthMask(gl.GL_FALSE)
    gl.glEnable(gl.GL_BLEND)

    # Transparent surfaces
    framebuffer.activate()
    window.clear(color=(0,0,0,1))
    gl.glBlendFuncSeparate(gl.GL_ONE,  gl.GL_ONE,
                           gl.GL_ZERO, gl.GL_ONE_MINUS_SRC_ALPHA)
    quads.draw(gl.GL_TRIANGLES, indices)
    framebuffer.deactivate()
    
    # Compositing
    gl.glBlendFunc(gl.GL_ONE_MINUS_SRC_ALPHA, gl.GL_SRC_ALPHA)
    gl.glEnable(gl.GL_BLEND)
    post.draw(gl.GL_TRIANGLE_STRIP)
コード例 #21
0
def on_draw(dt):
    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube["u_color"] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, faces)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube["u_color"] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)
コード例 #22
0
        def on_draw(dt):
            window.clear()
            demo_idx = 0
            for program_object in self.programs:
                program = program_object.program

                model = matrix_model(np.copy(program_object.u_model))
                #self.deg_x += dt*20
                #self.deg_y += dt*40
                self.demo_dt += dt/5

                demo_idx += 1
                '''
                if self.demo_dt > 2:
                    if demo_idx == 1:
                        if self.demo_dt > 2.4:
                            if program['alpha'] <= 0.1:
                                continue
                            else:
                                program['alpha'] -= 0.01
                    elif demo_idx == 2:
                        if self.demo_dt > 2.8:
                            program['alpha'] += 0.01
                '''



                program['u_model'] = np.dot(model, self.u_model)

                program['u_view'] = self.u_view
                program['u_projection'] = self.u_projection
                if program_object.draw_mode == gl.GL_TRIANGLES:
                    program.draw(program_object.draw_mode, program_object.face)
                elif program_object.draw_mode == gl.GL_LINES and program_object.name == 'ProgramSFM3DRegion':
                    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
                    gl.glEnable(gl.GL_BLEND)
                    gl.glDepthMask(gl.GL_FALSE)
                    program.draw(program_object.draw_mode, program_object.O)
                    gl.glDepthMask(gl.GL_TRUE)
                else:
                    program.draw(program_object.draw_mode)
コード例 #23
0
def on_draw(dt):
    # GUI
    imguiRenderer.process_inputs()
    imgui.new_frame()

    if imgui.begin_main_menu_bar():
        if imgui.begin_menu("File", True):
            clicked, selected = imgui.menu_item("Quit", 'ESC', False, True)
            if clicked:
                exit(0)
            imgui.end_menu()

        imgui.end_main_menu_bar()

    imgui.begin('Cube')
    changed, zoom = imgui.slider_float('zoom', trackball.zoom, 15, 90)
    if changed: trackball.zoom = zoom
    imgui.end()

    imgui.end_frame()
    imgui.render()


    window.clear()

    # Filled cube
    gl.glDisable(gl.GL_BLEND)
    gl.glEnable(gl.GL_DEPTH_TEST)
    gl.glEnable(gl.GL_POLYGON_OFFSET_FILL)
    cube['u_color'] = 1, 1, 1, 1
    cube.draw(gl.GL_TRIANGLES, faces)

    # Outlined cube
    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
    gl.glEnable(gl.GL_BLEND)
    gl.glDepthMask(gl.GL_FALSE)
    cube['u_color'] = 0, 0, 0, 1
    cube.draw(gl.GL_LINES, outline)
    gl.glDepthMask(gl.GL_TRUE)

    imguiRenderer.render(imgui.get_draw_data())
コード例 #24
0
        def on_draw(dt):
            window.clear()
            demo_idx = 0
            for program_object in self.programs:
                program = program_object.program

                model = matrix_model(np.copy(program_object.u_model))
                #self.deg_x += dt*20
                #self.deg_y += dt*40
                self.demo_dt += dt/5

                demo_idx += 1
                '''
                if self.demo_dt > 2:
                    if demo_idx == 1:
                        if self.demo_dt > 2.4:
                            if program['alpha'] <= 0.1:
                                continue
                            else:
                                program['alpha'] -= 0.01
                    elif demo_idx == 2:
                        if self.demo_dt > 2.8:
                            program['alpha'] += 0.01
                '''



                program['u_model'] = np.dot(model, self.u_model)

                program['u_view'] = self.u_view
                program['u_projection'] = self.u_projection
                if program_object.draw_mode == gl.GL_TRIANGLES:
                    program.draw(program_object.draw_mode, program_object.face)
                elif program_object.draw_mode == gl.GL_LINES and program_object.name == 'ProgramSFM3DRegion':
                    gl.glDisable(gl.GL_POLYGON_OFFSET_FILL)
                    gl.glEnable(gl.GL_BLEND)
                    gl.glDepthMask(gl.GL_FALSE)
                    program.draw(program_object.draw_mode, program_object.O)
                    gl.glDepthMask(gl.GL_TRUE)
                else:
                    program.draw(program_object.draw_mode)
コード例 #25
0
ファイル: winding.py プロジェクト: zhangluustb/python-opengl
def on_draw(dt):
    window.clear()

    # Disable color and depth writing
    gl.glColorMask(gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE)
    gl.glDepthMask(gl.GL_FALSE)

    gl.glStencilFunc(gl.GL_ALWAYS, 0, 0)
    # gl.glStencilOp(gl.GL_KEEP, gl.GL_INVERT, gl.GL_INVERT)
    gl.glStencilOpSeparate(gl.GL_FRONT, gl.GL_KEEP, gl.GL_KEEP, gl.GL_INCR)
    gl.glStencilOpSeparate(gl.GL_BACK, gl.GL_KEEP, gl.GL_KEEP, gl.GL_DECR)

    polygon.draw(gl.GL_TRIANGLES, I)

    # glStencilFunc(func, ref, mask):
    #  GL_NEVER:    Always fails
    #  GL_LESS:     Passes if ( ref & mask ) <  ( stencil & mask )
    #  GL_LEQUAL:   Passes if ( ref & mask ) <= ( stencil & mask )
    #  GL_GREATER:  Passes if ( ref & mask ) >  ( stencil & mask )
    #  GL_GEQUAL:   Passes if ( ref & mask ) >= ( stencil & mask )
    #  GL_EQUAL:    Passes if ( ref & mask ) =  ( stencil & mask )
    #  GL_NOTEQUAL: Passes if ( ref & mask ) != ( stencil & mask )
    #  GL_ALWAYS:   Always passes

    # Enable color and depth writing
    gl.glColorMask(gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE)
    gl.glDepthMask(gl.GL_TRUE)

    # odd
    gl.glStencilFunc(gl.GL_EQUAL, 0x01, 0x1)

    # non zero
    # gl.glStencilFunc(gl.GL_NOTEQUAL, 0x00, 0xff)

    # positive
    # gl.glStencilFunc(gl.GL_LESS, 0x0, 0xff)

    gl.glStencilOp(gl.GL_KEEP, gl.GL_KEEP, gl.GL_KEEP)

    polygon.draw(gl.GL_TRIANGLES, I)
コード例 #26
0
    def on_draw(dt):
        global phi, theta

        window.clear()

        lock.acquire()
        try:
            gl.glDisable(gl.GL_DEPTH_TEST)

            # try:
            #    quad['texture'] = cam_img_texture
            # except:
            #    quad['texture'] = cv.imread("/home/rahul/Pictures/GitKraken_001.png")[..., ::-1]
            quad.draw(gl.GL_TRIANGLE_STRIP)

            gl.glEnable(gl.GL_DEPTH_TEST)
            # Filled cube

            path["u_color"] = 0, 1, 1
            path.draw(gl.GL_TRIANGLE_STRIP)
            gl.glDepthMask(gl.GL_FALSE)
            path["u_color"] = 0, 0, 0
            gl.glLineWidth(7.5)
            path.draw(gl.GL_LINES, bline_I)
            gl.glLineWidth(1.0)
            gl.glDepthMask(gl.GL_TRUE)

            model = np.eye(4, dtype=np.float32)
            glm.rotate(model, theta, 0, 0, 1)
            glm.rotate(model, phi, 0, 1, 0)

            for obj in bag.values():
                obj["u_color"] = 1, 0, 0
                obj.draw(gl.GL_TRIANGLES, I)

                gl.glDepthMask(gl.GL_FALSE)
                obj["u_color"] = 0, 0, 0
                obj.draw(gl.GL_LINES, O)
                gl.glDepthMask(gl.GL_TRUE)

                obj["model"] = model

            # cube.draw(gl.GL_TRIANGLES, I)

            # Make cube rotate
            theta += 2.0  # degrees
            phi += 2.0  # degrees
        finally:
            lock.release()
コード例 #27
0
    def draw(self, mode=gl.GL_TRIANGLES):
        """ Draw collection """

        gl.glDepthMask(gl.GL_FALSE)
        Collection.draw(self, mode)
        gl.glDepthMask(gl.GL_TRUE)
コード例 #28
0
    def draw(self, mode = gl.GL_TRIANGLE_STRIP):
        """ Draw collection """

        gl.glDepthMask(gl.GL_FALSE)
        Collection.draw(self, mode)
        gl.glDepthMask(gl.GL_TRUE)