0% found this document useful (0 votes)
27 views

Import Pygame As PG

Uploaded by

Luis Gomz
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Import Pygame As PG

Uploaded by

Luis Gomz
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

import pygame as pg

#from pygame.locals import *


from OpenGL.GL import *
import numpy as np
import ctypes
from OpenGL.GL.shaders import compileProgram, compileShader
#from OpenGL.GL.shaders import compileProgram, compileShader

class App:

def __init__(self):
#inicialice python
pg.init()
pg.display.set_mode((640, 480), pg.OPENGL|pg.DOUBLEBUF)
self.clock = pg.time.Clock()

#inicialice opengl
glClearColor(0.1, 0.2, 0.2, 1)
self.shader = self.createShader("shaders/vertex.txt",
"shaders/fragment.txt")
glUseProgram(self.shader)
self.triangle = Triangle()
self.mainLoop()

def createShader(self, vertexFilepath, fragmentFilepath):

with open(vertexFilepath, 'r') as f:


vertex_src = f.readlines()

with open(fragmentFilepath, 'r') as f:


fragment_src = f.readlines()

shader = compileProgram(
compileShader(vertex_src, GL_VERTEX_SHADER),
compileShader(fragment_src, GL_FRAGMENT_SHADER)
)
return shader

def mainLoop(self):

running = True
while (running):
#check events
for event in pg.event.get():
if (event.type == pg.QUIT):
running = False

#refresh screen
glClear(GL_COLOR_BUFFER_BIT)

glUseProgram(self.shader)
glBindVertexArray(self.triangle.vao)
glDrawArrays(GL_TRIANGLES, 0,
self.triangle.vertex_count)

pg.display.flip()

#tiempo
self.clock.tick(60)
# pg.time.wait(10)
self.quit()

def quit(self):

self.triangle.destroy()
glDeleteProgram(self.shader)
pg.quit()
# self.triangle.destroy()
#glDeleteProgram(self.shader)
#pg.quit()

class Triangle:

def __init__(self):

#x, y, z, r, g, b
self.vertices = (
-0.5, -0.5, 0.0, 1.0, 0.0, 0.0,
0.5, -0.5, 0.0, 0.0, -1.0, -0.0,
0.0, 0.5, 0.0, 0.0, 0.0, 1.0
)

self.vertices = np.array(self.vertices, dtype=np.float32)

self.vertex_count = 3

self.vao = glGenVertexArrays(1)
glBindVertexArray(self.vao)
self.vbo = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, self.vbo)
glBufferData(GL_ARRAY_BUFFER, self.vertices.nbytes,
self.vertices, GL_STATIC_DRAW)
glEnableVertexAttribArray(0)
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 24,
ctypes.c_void_p(0))
glEnableVertexAttribArray(1)
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 24,
ctypes.c_void_p(12))

def destroy(self):

glDeleteVertexArrays(1, (self.vao,))
glDeleteBuffers(1, (self.vbo,))

if __name__ == "__main__":
myApp = App()
myApp.mainLoop()

import pygame as pg
from OpenGL.GL import*

class App:

def __init__(self):

pg.init()
pg.display.set_mode((640, 480), pg.OPENGL | pg.DOUBLEBUF),
self.clock =pg.time.Clock()

glClearColor(0.1, 0.2, 0.2, 1)


self.mainLoop()

def mainLoop(self):

running = True

while (running):

for event in pg.event.get():


if(event.type == pg.quit):
running = False

glClear(GL_COLOR_BUFFER_BIT)
pg.display.flip()
self.clock.tick(60)
self.quit()

def quit(self):

pg.quit()

if __name__ == "__main.py__":
myApp = App()

import sys
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

def init():
glClearColor(0.0, 0.0, 0.0, 1.0) # Color de fondo negro

def display():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glutSwapBuffers()

def reshape(width, height):


glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0, float(width) / float(height), 0.1, 50.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
glutInitWindowSize(800, 600)
glutInitWindowPosition(0, 0)
glutCreateWindow("Ventana en Blanco")
glutDisplayFunc(display)
glutReshapeFunc(reshape)
init()
glutMainLoop()

if __name__ == "__main__":
main()

You might also like