Esempio n. 1
0
    idata += struct.pack(
        '%di' % (step + 3),
        *([k * (step + 2) + i for i in range(step + 2)] + [-1]))

vbo = GL.NewVertexBuffer(data)
ibo = GL.NewIndexBuffer(idata)

vao = GL.NewVertexArray(grass_prog, vbo, '3f3f3f1f1f',
                        ['vert', 'direction', 'color', 'thickness', 'power'],
                        ibo)

ssao_vbo = GL.NewVertexBuffer(
    struct.pack('8f', 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0))
ssao_vao = GL.NewVertexArray(ssao_prog, ssao_vbo, '2f', ['vert'])

ubo = GL.NewUniformBuffer(b''.join(struct.pack('2f', x, y) for x, y in kernel))

fbo, color, depth = GL.NewFramebuffer()

GL.SetUniform(grass_prog['mat'], struct.pack('16f', *camera))
GL.SetUniform(ssao_prog['texture'], 0)
GL.SetUniform(ssao_prog['depth'], 1)

GL.UseUniformBuffer(ubo, ssao_prog['Kernel'])

while WND.Update():
    GL.UseFramebuffer(fbo)
    GL.EnableDepthTest()
    GL.Clear(0, 0, 0)

    GL.RenderTriangleStrip(vao, 1000 * 8)
Esempio n. 2
0
circles_prog = GL.NewProgram([circles_vert, circles_frag])

GL.SetUniform(circles_prog['scale'], 0.002 * height / width, 0.002)

circle_vbo = GL.NewVertexBuffer(b''.join(struct.pack('2f', cos(i * 2 * pi / 128), sin(i * 2 * pi / 128)) for i in range(128)))
circle_vao = GL.NewVertexArray(circles_prog, circle_vbo, '2f', ['vert'])

circles = [
	(-400, -200, 100),
	(-250, -350, 100),
	(0, -300, 100),
	(250, -350, 100),
	(400, -200, 100),
]

circles_ubo = GL.NewUniformBuffer(struct.pack('i4x', len(circles)) + b''.join(struct.pack('2f1f4x', *c) for c in circles))
GL.UseUniformBuffer(circles_ubo, circles_prog['Circles'])

particles_prog = GL.NewProgram([particles_vert, particles_frag])

GL.SetUniform(particles_prog['scale'], 0.002 * height / width, 0.002)

particle_vbo = GL.NewVertexBuffer(b''.join(struct.pack('2f', cos(i * 2 * pi / 16), sin(i * 2 * pi / 16)) for i in range(16)))
particle_vao = GL.NewVertexArray(particles_prog, particle_vbo, '2f', ['vert'])

sbo = GL.NewStorageBuffer(b''.join(struct.pack('ffffff', -10000, 0, -10000, 0, 0, 0) for i in range(10240)))
GL.UseUniformBuffer(circles_ubo, circles_prog['Circles'])
GL.UseStorageBuffer(sbo)

k = 0
while WND.Update():
Esempio n. 3
0
GL.EnableBlend()
GL.EnableCullFace()
GL.EnableDepthTest()
GL.EnableMultisample()

GL.NewAdvancedVertexArray()
GL.NewFragmentShader()
GL.NewFramebuffer()
GL.NewGeometryShader()
GL.NewIndexBuffer()
GL.NewProgram()
GL.NewTessControlShader()
GL.NewTessEvaluationShader()
GL.NewTexture()
GL.NewUniformBuffer()
GL.NewVertexArray()
GL.NewVertexBuffer()
GL.NewVertexShader()

GL.ReadPixel()
GL.ReadPixels()

GL.ReadDepthPixel()
GL.ReadDepthPixels()

GL.ReadStorageBuffer()

GL.RenderLineLoop()
GL.RenderLineStrip()
GL.RenderLines()