4
4
from OpenGL import GL
5
5
6
6
from pygly .shader import Shader , VertexShader , FragmentShader , ShaderProgram
7
- from pygly .dtype_vertex_buffer import DtypeVertexBuffer
7
+ from pygly .vertex_buffer import VertexBuffer , BufferAttributes , GenericAttribute , VertexAttribute , TextureCoordAttribute
8
8
from pygly .vertex_array import VertexArray
9
9
10
10
@@ -114,34 +114,41 @@ def __init__( self ):
114
114
# we pass in a list of regions we want to define
115
115
# we only have 1 region here
116
116
# for each region, we pass in how many rows, and the dtype
117
- self .buffer = DtypeVertexBuffer (
118
- vertices .dtype ,
117
+ self .buffer = VertexBuffer (
119
118
GL .GL_ARRAY_BUFFER ,
120
119
GL .GL_STATIC_DRAW ,
121
- data = vertices
120
+ data = vertices ,
122
121
)
123
-
124
- self .vao = VertexArray ()
125
-
122
+
126
123
# pass the shader and region to our VAO
127
124
# and bind each of the attributes to a VAO index
128
125
# the shader name is the variable name used in the shader
129
126
# the buffer name is the name of the property in our vertex dtype
127
+ self .buffer_attributes = BufferAttributes ()
128
+ self .buffer_attributes [ 'position' ] = GenericAttribute .from_dtype (
129
+ self .buffer ,
130
+ vertices .dtype ,
131
+ 'position' ,
132
+ location = self .shader .attributes [ 'in_position' ]
133
+ )
134
+
130
135
# create our vertex array
136
+ self .vao = VertexArray ()
137
+
131
138
self .vao .bind ()
132
139
self .buffer .bind ()
133
- self .buffer . set_attribute_pointer_dtype ( self . shader , 'in_position' , 'position' )
140
+ self .buffer_attributes . set ( )
134
141
self .buffer .unbind ()
135
142
self .vao .unbind ()
136
143
137
144
def draw ( self , projection , model_view , colour ):
138
145
self .shader .bind ()
139
- self .shader .uniforms ['projection' ].value = projection
140
- self .shader .uniforms ['model_view' ].value = model_view
141
- self .shader .uniforms ['in_colour' ].value = colour
146
+ self .shader .uniforms [ 'projection' ].value = projection
147
+ self .shader .uniforms [ 'model_view' ].value = model_view
148
+ self .shader .uniforms [ 'in_colour' ].value = colour
142
149
143
150
self .vao .bind ()
144
- GL .glDrawArrays ( GL .GL_TRIANGLES , 0 , self . buffer . rows )
151
+ GL .glDrawArrays ( GL .GL_TRIANGLES , 0 , len ( vertices ) )
145
152
self .vao .unbind ()
146
153
147
154
self .shader .unbind ()
@@ -186,11 +193,18 @@ def __init__( self ):
186
193
)
187
194
188
195
# create our vertex buffer
189
- self .buffer = DtypeVertexBuffer (
190
- vertices .dtype ,
196
+ self .buffer = VertexBuffer (
191
197
GL .GL_ARRAY_BUFFER ,
192
198
GL .GL_STATIC_DRAW ,
193
- data = vertices
199
+ data = vertices ,
200
+ )
201
+
202
+ self .buffer_attributes = BufferAttributes ()
203
+ self .buffer_attributes [ 'position' ] = GenericAttribute .from_dtype (
204
+ self .buffer ,
205
+ vertices .dtype ,
206
+ 'position' ,
207
+ location = self .shader .attributes [ 'in_position' ]
194
208
)
195
209
196
210
def draw ( self , colour ):
@@ -204,9 +218,9 @@ def draw( self, colour ):
204
218
GL .glColor4f ( * colour )
205
219
206
220
# set the vertex pointer to the position data
207
- self .buffer . set_vertex_pointer_dtype ( 'position' )
221
+ self .buffer_attributes . set ( )
208
222
209
- GL .glDrawArrays ( GL .GL_TRIANGLES , 0 , self . buffer . rows )
223
+ GL .glDrawArrays ( GL .GL_TRIANGLES , 0 , len ( vertices ) )
210
224
211
225
self .buffer .pop_attributes ()
212
226
self .buffer .unbind ()
0 commit comments