Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import numpy
- import ctypes
- import sys
- from OpenGL.GL import *
- from OpenGL.GLU import *
- pygame.display.init()
- pygame.display.set_mode((640, 480), pygame.OPENGL|pygame.DOUBLEBUF)
- glViewport(0, 0, 640, 480)
- glClearColor(0.0, 0.0, 0.0, 1.0)
- triangle_verticies = numpy.array([-20.0, -20.0, 0.0,
- 20.0, -20.0, 0.0,
- 0.0, 20.0, 0.0], dtype=numpy.float32)
- projection_matrix = numpy.array([1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 0.0, 0.0,
- 0.0, 0.0, 0.0, 1.0], dtype=numpy.float32)
- view_matrix = numpy.array([1.0, 0.0, 0.0, 320.0,
- 0.0, 1.0, 0.0, 240.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0], dtype=numpy.float32)
- mvp_matrix = projection_matrix * view_matrix
- triangle_buffer_handle = glGenBuffers(1)
- glBindBuffer(GL_ARRAY_BUFFER, triangle_buffer_handle)
- glBufferData(GL_ARRAY_BUFFER, triangle_verticies, GL_STATIC_DRAW)
- v_shader_source = "attribute vec4 v_position;\n" +\
- "uniform mat4 uMVPMatrix;\n" +\
- "void main()\n" +\
- "{\n"+\
- " gl_Position = uMVPMatrix * v_position;\n" +\
- "}\n"
- f_shader_source = "void main()\n" +\
- "{\n" +\
- " gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n" +\
- "}\n"
- v_shader_handle = glCreateShader(GL_VERTEX_SHADER)
- glShaderSource(v_shader_handle, v_shader_source)
- glCompileShader(v_shader_handle)
- vs_compile_status = ctypes.c_int(-24)
- glGetShaderiv(v_shader_handle, GL_COMPILE_STATUS, vs_compile_status)
- if vs_compile_status.value == 0:
- print glGetShaderInfoLog(v_shader_handle)
- sys.exit(0)
- f_shader_handle = glCreateShader(GL_FRAGMENT_SHADER)
- glShaderSource(f_shader_handle, f_shader_source)
- glCompileShader(f_shader_handle)
- s_program_handle = glCreateProgram()
- glAttachShader(s_program_handle, v_shader_handle)
- glAttachShader(s_program_handle, f_shader_handle)
- glLinkProgram(s_program_handle)
- link_status = ctypes.c_int(-24)
- glGetProgramiv(s_program_handle, GL_LINK_STATUS, link_status)
- glUseProgram(s_program_handle)
- v_position_handle = glGetAttribLocation(s_program_handle, "v_position")
- mvp_matrix_handle = glGetUniformLocation(s_program_handle, "uMVPMatrix")
- clock = pygame.time.Clock()
- running = True
- while running:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- clock.tick(40)
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- glVertexAttribPointer(v_position_handle, 3, GL_FLOAT, GL_FALSE, 0,
- triangle_verticies)
- glEnableVertexAttribArray(v_position_handle)
- glUniformMatrix4fv(mvp_matrix_handle, 1, GL_FALSE, mvp_matrix)
- glDrawArrays(GL_TRIANGLES, 0, 3)
- pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement