@@ -87,6 +87,7 @@ def __init__(self, name, mode=moderngl.TRIANGLES):
8787 :param name: The name for debug purposes
8888 :param mode: Default draw mode for this VAO
8989 """
90+ self .ctx = context .ctx ()
9091 self .name = name
9192 self .mode = mode
9293
@@ -156,11 +157,14 @@ def buffer(self, buffer, buffer_format: str, attribute_names, per_instance=False
156157 if not isinstance (attribute_names , list ):
157158 attribute_names = [attribute_names , ]
158159
159- if not isinstance (buffer , moderngl .Buffer ) and not isinstance ( buffer , numpy .ndarray ) :
160- raise VAOError ("buffer parameter must be a moderngl.Buffer or numpy.ndarray instance" )
160+ if not type (buffer ) in [ moderngl .Buffer , numpy .ndarray , bytes ] :
161+ raise VAOError ("buffer parameter must be a moderngl.Buffer, numpy.ndarray or bytes instance" )
161162
162163 if isinstance (buffer , numpy .ndarray ):
163- buffer = context .ctx ().buffer (buffer .tobytes ())
164+ buffer = self .ctx .buffer (buffer .tobytes ())
165+
166+ if isinstance (buffer , bytes ):
167+ buffer = self .ctx .buffer (data = buffer )
164168
165169 formats = buffer_format .split ()
166170 if len (formats ) != len (attribute_names ):
@@ -178,11 +182,14 @@ def index_buffer(self, buffer, index_element_size=4):
178182 :param buffer: Buffer object or ndarray
179183 :param index_element_size: Byte size of each element. 1, 2 or 4
180184 """
181- if not isinstance (buffer , moderngl .Buffer ) and not isinstance ( buffer , numpy .ndarray ) :
182- raise VAOError ("buffer parameter must be a moderngl.Buffer or numpy.ndarray instance" )
185+ if not type (buffer ) in [ moderngl .Buffer , numpy .ndarray , bytes ] :
186+ raise VAOError ("buffer parameter must be a moderngl.Buffer, numpy.ndarray or bytes instance" )
183187
184188 if isinstance (buffer , numpy .ndarray ):
185- buffer = context .ctx ().buffer (buffer .tobytes ())
189+ buffer = self .ctx .buffer (buffer .tobytes ())
190+
191+ if isinstance (buffer , bytes ):
192+ buffer = self .ctx .buffer (data = buffer )
186193
187194 self ._index_buffer = buffer
188195 self ._index_element_size = index_element_size
0 commit comments