GL.NewVertexArray() GL.NewVertexBuffer() GL.NewVertexShader() GL.ReadPixel() GL.ReadPixels() GL.ReadDepthPixel() GL.ReadDepthPixels() GL.ReadStorageBuffer() GL.RenderLineLoop() GL.RenderLineStrip() GL.RenderLines() GL.RenderPoints() GL.RenderTriangleFan() GL.RenderTriangleStrip() GL.RenderTriangles() GL.RenderLinesAdjacency() GL.RenderLineStripAdjacency() GL.RenderTrianglesAdjacency() GL.RenderTriangleStripAdjacency() GL.SetTextureFiltered() GL.SetTextureMipmapped() GL.SetTexturePixelated() GL.SetUniform() GL.SetUniformMatrix()
]) width, height = WND.GetSize() GL.SetUniform(points['scale'], 10, 10 * height / width) def vec(a, r=1): return [math.cos(a) * r, math.sin(a) * r] def rvec(a, b): return vec(random.uniform(0.0, math.pi * 2.0), random.uniform(a, b)) P = numpy.array([[0.0, 0.0] for i in range(100)]) V = numpy.array([rvec(0.01, 0.05) for i in range(100)]) vbo = GL.NewVertexBuffer(P, dynamic=True) vao = GL.NewVertexArray(points, vbo, '2d', ['vert']) while WND.Update(): P += V GL.Clear(240, 240, 240) GL.RenderPoints(vao, 100) GL.UpdateVertexBuffer(vbo, 0, P) if WND.KeyPressed(' '): P = numpy.array([[0.0, 0.0] for i in range(100)]) V = numpy.array([rvec(0.01, 0.05) for i in range(100)])
out vec4 color; void main() { color = vec4(0.30, 0.50, 1.00, 1.0); } ''') prog = GL.NewProgram([vert, frag]) transform = GL.NewTransformProgram([tvert], ['out_pos', 'out_prev']) vbo1 = GL.NewVertexBuffer(b''.join( struct.pack('2f2f', 0.0, 0.0, random.uniform(-0.001, 0.001), random.uniform(-0.001, 0.0)) for i in range(1024))) vbo2 = GL.NewVertexBuffer(b''.join( struct.pack('2f2f', 0.0, 0.0, random.uniform(-0.001, 0.001), random.uniform(-0.001, 0.0)) for i in range(1024))) vao1 = GL.NewVertexArray(transform, vbo1, '2f2f', ['in_pos', 'in_prev']) vao2 = GL.NewVertexArray(transform, vbo2, '2f2f', ['in_pos', 'in_prev']) render_vao = GL.NewVertexArray(prog, vbo1, '2f8x', ['vert']) GL.SetUniform(transform['acc'], 0, -0.00001) while WND.Update(): GL.Clear(240, 240, 240) GL.RenderPoints(render_vao, 1024) GL.TransformPoints(vao1, vbo2, 1024) GL.TransformPoints(vao2, vbo1, 1024)