@@ -64,11 +64,9 @@ def render_camera(self, camera, rgb=True, depth=False, segmentation=False, norma
6464 # Set the context
6565 self ._renderer .make_current ()
6666
67- # Update the buffers
68- if self ._buffer_updates is None :
69- gs .raise_exception ("Buffers were not set before rendering. Please call 'update_scene' method." )
70-
71- self ._context .jit .update_buffer (self ._buffer_updates )
67+ # Update the context
68+ self ._context .jit .update_buffer (self ._context .buffer )
69+ self ._context .buffer .clear ()
7270
7371 # Render
7472 if rgb or depth or normal :
@@ -97,42 +95,40 @@ def render_camera(self, camera, rgb=True, depth=False, segmentation=False, norma
9795 seg = True ,
9896 )
9997
100- # Unset the context
98+ # Unset the context if necessary
10199 self ._renderer .make_uncurrent ()
102100 else :
103- # Update the buffers
104- self ._context .jit .update_buffer (self ._buffer_updates )
105-
106101 # Render
107102 if rgb or depth or normal :
108- retval = self ._viewer ._pyrender_viewer . render_offscreen (
103+ retval = self ._viewer .render_offscreen (
109104 self ._camera_nodes [camera .uid ],
110105 self ._camera_targets [camera .uid ],
111106 depth = depth ,
112107 normal = normal ,
113108 )
114109
115110 if segmentation :
116- seg_idxc_rgb_arr , _ = self ._viewer ._pyrender_viewer . render_offscreen (
111+ seg_idxc_rgb_arr , _ = self ._viewer .render_offscreen (
117112 self ._camera_nodes [camera .uid ],
118113 self ._camera_targets [camera .uid ],
119114 depth = False ,
120115 normal = False ,
121116 seg = True ,
122117 )
123118
124- if rgb :
119+ if segmentation :
120+ seg_idxc_arr = self ._context .seg_idxc_rgb_arr_to_idxc_arr (seg_idxc_rgb_arr )
121+
122+ if rgb or depth or normal :
125123 rgb_arr = retval [0 ]
126124 if depth :
127125 depth_arr = retval [1 ]
128126 if normal :
129127 normal_arr = retval [2 ]
130- if segmentation :
131- seg_idxc_arr = self ._context .seg_idxc_rgb_arr_to_idxc_arr (seg_idxc_rgb_arr )
132128 return rgb_arr , depth_arr , seg_idxc_arr , normal_arr
133129
134130 def update_scene (self ):
135- self ._buffer_updates = self . _context .update ()
131+ self ._context .update ()
136132
137133 def destroy (self ):
138134 for node in self ._camera_nodes .values ():
@@ -144,13 +140,13 @@ def destroy(self):
144140
145141 if self ._offscreen and self ._renderer is not None :
146142 try :
147- self ._renderer ._platform . make_current ()
143+ self ._renderer .make_current ()
148144 self ._renderer .delete ()
149145 except OpenGL .error .GLError :
150146 pass
151147 del self ._renderer
152- gc .collect ()
153148 self ._renderer = None
149+ gc .collect ()
154150
155151 @property
156152 def viewer (self ):
0 commit comments