Esempio n. 1
0
    def __init__(self):
        window_cls = mglw.get_window_cls('moderngl_window.context.pyglet.Window')
        window = window_cls(title="GoBang", gl_version=(4, 1), size=(800, 600), )
        mglw.activate_context(ctx=window.ctx)
        super().__init__(ctx=window.ctx, wnd=window)

        self.prog = self.ctx.program(
            vertex_shader='''
                #version 330

                in vec2 in_vert;
                in vec2 in_pos;
                in float in_scale;
                in vec4 in_color;

                out vec4 v_color;

                void main() {
                    gl_Position = vec4(in_pos + (in_vert * in_scale), 0.0, 1.0);
                    v_color = in_color;
                }
            ''',
            fragment_shader='''
                #version 330

                in vec4 v_color;
                out vec4 f_color;

                void main() {
                    f_color = v_color;
                }
            ''',
        )
        self.scale = 0.8
        color = np.array([[0.0, 1.0, 0.0, 1.0]], dtype='f4')
        self.color_buffer = self.ctx.buffer(color.tobytes())
        # self.mvp = self.prog['Mvp']
        # self.mvp.write((np.array([[self.scale, 0, 0, 0], [0, self.scale, 0, 0],
        #                           [0, 0, self.scale, 0], [0, 0, 0, 1]], dtype='f4')).tobytes())
        self.index_buffer = self.ctx.buffer(np.array([
            0, 1, 2,
            1, 2, 3
        ], 'i4').tobytes())

        self.share_cache = None
        self.w = 0
        self.h = 0
    def __init__(self,
                 lines=None,
                 line_colors=None,
                 lw=1,
                 points=None,
                 point_colors=None,
                 point_r=1):
        self.point_r = point_r
        # Configure to use pyglet window
        window_str = 'moderngl_window.context.pyglet.Window'
        window_cls = moderngl_window.get_window_cls(window_str)
        window = window_cls(
            title="My Window",
            gl_version=(3, 3),
            # aspect_ratio=1.0,
            # resizable=False,
            # size=(1600, 800),
        )
        self.wnd = window
        moderngl_window.activate_context(ctx=window.ctx)
        # self.wnd.gl_version = (3, 3)
        resources.register_dir(Path(__file__).parent.absolute())
        self.ctx = self.wnd.ctx

        # register event methods
        self.wnd.resize_func = self.resize
        # self.wnd.iconify_func = self.iconify
        # self.wnd.key_event_func = self.key_event
        # self.wnd.mouse_position_event_func = self.mouse_position_event
        # self.wnd.mouse_drag_event_func = self.mouse_drag_event
        # self.wnd.mouse_scroll_event_func = self.mouse_scroll_event
        # self.wnd.mouse_press_event_func = self.mouse_press_event
        # self.wnd.mouse_release_event_func = self.mouse_release_event
        # self.wnd.unicode_char_entered_func = self.unicode_char_entered

        self.line_prog = programs.load(
            ProgramDescription(path="rich_lines.glsl"))
        self.point_prog = programs.load(ProgramDescription(path="points.glsl"))

        bbox = drawing_bbox(lines + points)
        bbox = drawing_bbox(lines + points, padding=0.05 * bbox[2])
        self.bbox = bbox
        self.drawing_W = bbox[2]
        self.drawing_H = bbox[3]

        if len(lines) > 0:
            vertex, index, colors = build_buffers(lines, line_colors)

            vbo = self.ctx.buffer(vertex)
            ibo = self.ctx.buffer(index)
            cbo = self.ctx.buffer(colors)
            self.line_vao = self.ctx.vertex_array(self.line_prog, [
                (vbo, "2f", "in_position"),
                (cbo, "4f", "in_color"),
            ],
                                                  index_buffer=ibo)
        else:
            self.line_vao = None

        if len(points) > 0:
            point_vertex, point_color = build_point_buffers(
                points, point_colors)
            vbo = self.ctx.buffer(point_vertex)
            cbo = self.ctx.buffer(point_color)
            self.point_vao = self.ctx.vertex_array(self.point_prog, [
                (vbo, "2f", "in_position"),
                (cbo, "4f", "in_color"),
            ])
        else:
            self.point_vao = None

        # Set the desired properties for the lines.
        # Note:
        # - round cap/ends are used if miter_limit < 0
        # - antialias value is in model space and should probably be scaled to be ~1.5px in
        #   screen space

        self.line_prog["linewidth"].value = lw
        self.line_prog["antialias"].value = 1.5
        self.line_prog["miter_limit"].value = -1
        # self.line_prog["color"].value = 0, 0, 0, 1

        self.update_projection()
Esempio n. 3
0
#version 430
#define GROUP_SIZE """ + str(GROUP_SIZE) + acc_compute_shader_code

pos_compute_shader_code = """
#version 430
#define GROUP_SIZE """ + str(GROUP_SIZE) + pos_compute_shader_code

gl_version = (4, 3)
title = "ModernGL shader view"
window_size = (1024, 1024)
height, width = window_size
aspect_ratio = 1 / 1
resizable = True
samples = 4
window_str = 'moderngl_window.context.pyglet.Window'
window_cls = mglw.get_window_cls(window_str)
window = window_cls(
    title="My Window",
    gl_version=(4, 1),
    size=(1024, 1024),
    aspect_ratio=aspect_ratio,
)
ctx = window.ctx
mglw.activate_context(ctx=ctx)

with open("domain_color_util_1_glsl.txt") as file:
    util_shader_code = file.read()

prog = ctx.program(vertex_shader='''
                #version 430