-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathjaya.py
105 lines (76 loc) · 2.23 KB
/
jaya.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from __future__ import division
from OpenGL.GL import *
import pygame
from pygame.locals import *
from ctypes import *
width = 800
height = 600
pygame.init()
pygame.display.set_mode( (width, height), DOUBLEBUF|OPENGL )
vertices = [
0,0,
-0.5, -0.5,
-0.5, 0.5,
0.5, 0.5,
0.5, -0.5
]
vertices = ( c_float * len( vertices ) )( *vertices )
indices = [
0, 1, 2,
0, 2, 3,
0, 3, 4,
0, 4, 1
]
indices = ( c_uint * len( indices ) )( *indices )
vbo = glGenBuffers( 1 )
glBindBuffer( GL_ARRAY_BUFFER, vbo )
glBufferData( GL_ARRAY_BUFFER, vertices, GL_STATIC_DRAW )
vbi = glGenBuffers( 1 )
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, vbi )
glBufferData( GL_ELEMENT_ARRAY_BUFFER, indices, GL_STATIC_DRAW )
vertexSource = """
attribute vec2 position;
void main() {
gl_Position = vec4( position, 0.0, 1.0 );
}
"""
fragmentSource = """
uniform vec3 diffuse;
void main() {
gl_FragColor = vec4( diffuse, 1.0 );
}
"""
vertexShader = glCreateShader( GL_VERTEX_SHADER )
glShaderSource( vertexShader, vertexSource )
glCompileShader( vertexShader )
print( glGetShaderInfoLog( vertexShader ) )
fragmentShader = glCreateShader( GL_FRAGMENT_SHADER )
glShaderSource( fragmentShader, fragmentSource )
glCompileShader( fragmentShader )
print( glGetShaderInfoLog( fragmentShader ) )
shaderProgram = glCreateProgram()
glAttachShader( shaderProgram, vertexShader )
glAttachShader( shaderProgram, fragmentShader )
glLinkProgram( shaderProgram )
print( glGetProgramInfoLog( shaderProgram ) )
glUseProgram( shaderProgram )
difAttrib = glGetUniformLocation( shaderProgram, "diffuse" )
glUniform3f( difAttrib, 1.0, 0.0, 0.0 )
posAttrib = glGetAttribLocation( shaderProgram, "position" )
glVertexAttribPointer( posAttrib, 2, GL_FLOAT, GL_FALSE, 0, None )
glEnableVertexAttribArray( posAttrib )
glClearColor( 0.0, 0.0, 0.0, 0.0 )
glClear( GL_COLOR_BUFFER_BIT )
# glDrawArrays( GL_TRIANGLES, 0, 3 )
startIndex = 1
itemPerData = 3
dataSize = 4
count = 3
glDrawElements( GL_TRIANGLES, itemPerData * count, GL_UNSIGNED_INT, c_void_p( startIndex * itemPerData * dataSize ) )
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pygame.time.wait( 10 )