@@ -102,10 +102,10 @@ void RasterizerGLES3::begin_frame(double frame_step) {
102102 texture_storage->frame .count ++;
103103 texture_storage->frame .delta = frame_step;
104104
105- storage. update_dirty_resources ();
105+ storage-> update_dirty_resources ();
106106
107- storage. info .render_final = storage. info .render ;
108- storage. info .render .reset ();
107+ storage-> info .render_final = storage-> info .render ;
108+ storage-> info .render .reset ();
109109
110110 // scene->iteration();
111111}
@@ -196,10 +196,14 @@ typedef void (*DEBUGPROCARB)(GLenum source,
196196typedef void (*DebugMessageCallbackARB)(DEBUGPROCARB callback, const void *userParam);
197197
198198void RasterizerGLES3::initialize () {
199- print_verbose ( " Using OpenGL video driver " );
199+ print_line ( " OpenGL Renderer: " + RS::get_singleton ()-> get_video_adapter_name () );
200200
201- texture_storage.set_main_thread_id (Thread::get_caller_id ());
201+ texture_storage->set_main_thread_id (Thread::get_caller_id ());
202+ // make sure the OS knows to only access the renderer from the main thread
203+ OS::get_singleton ()->set_render_main_thread_mode (OS::RENDER_MAIN_THREAD_ONLY);
204+ }
202205
206+ RasterizerGLES3::RasterizerGLES3 () {
203207#ifdef GLAD_ENABLED
204208 if (!gladLoadGL ()) {
205209 ERR_PRINT (" Error initializing GLAD" );
@@ -251,21 +255,28 @@ void RasterizerGLES3::initialize() {
251255#endif // GLES_OVER_GL
252256#endif // CAN_DEBUG
253257
254- print_line (" OpenGL Renderer: " + RS::get_singleton ()->get_video_adapter_name ());
255- storage.initialize ();
256- canvas.initialize ();
257- // scene.initialize();
258-
259- // make sure the OS knows to only access the renderer from the main thread
260- OS::get_singleton ()->set_render_main_thread_mode (OS::RENDER_MAIN_THREAD_ONLY);
258+ // OpenGL needs to be initialized before initializing the Rasterizers
259+ config = memnew (GLES3::Config);
260+ texture_storage = memnew (GLES3::TextureStorage);
261+ material_storage = memnew (GLES3::MaterialStorage);
262+ mesh_storage = memnew (GLES3::MeshStorage);
263+ particles_storage = memnew (GLES3::ParticlesStorage);
264+ light_storage = memnew (GLES3::LightStorage);
265+ storage = memnew (RasterizerStorageGLES3);
266+ canvas = memnew (RasterizerCanvasGLES3 (storage));
267+ scene = memnew (RasterizerSceneGLES3);
261268}
262269
263- RasterizerGLES3::RasterizerGLES3 () {
264- canvas.storage = &storage;
265- canvas.scene_render = &scene;
266- // storage.canvas = &canvas;
267- // scene.storage = &storage;
268- // storage.scene = &scene;
270+ RasterizerGLES3::~RasterizerGLES3 () {
271+ memdelete (scene);
272+ memdelete (canvas);
273+ memdelete (storage);
274+ memdelete (light_storage);
275+ memdelete (particles_storage);
276+ memdelete (mesh_storage);
277+ memdelete (material_storage);
278+ memdelete (texture_storage);
279+ memdelete (config);
269280}
270281
271282void RasterizerGLES3::prepare_for_blitting_render_targets () {
@@ -327,12 +338,12 @@ void RasterizerGLES3::set_boot_image(const Ref<Image> &p_image, const Color &p_c
327338 }
328339 glClear (GL_COLOR_BUFFER_BIT);
329340
330- canvas. canvas_begin ();
341+ canvas-> canvas_begin ();
331342
332- RID texture = texture_storage. texture_create ();
343+ RID texture = texture_storage-> texture_create ();
333344 // texture_storage.texture_allocate(texture, p_image->get_width(), p_image->get_height(), 0, p_image->get_format(), VS::TEXTURE_TYPE_2D, p_use_filter ? VS::TEXTURE_FLAG_FILTER : 0);
334- texture_storage. _texture_allocate_internal (texture, p_image->get_width (), p_image->get_height (), 0 , p_image->get_format (), RenderingDevice::TEXTURE_TYPE_2D);
335- texture_storage. texture_set_data (texture, p_image);
345+ texture_storage-> _texture_allocate_internal (texture, p_image->get_width (), p_image->get_height (), 0 , p_image->get_format (), RenderingDevice::TEXTURE_TYPE_2D);
346+ texture_storage-> texture_set_data (texture, p_image);
336347
337348 Rect2 imgrect (0 , 0 , p_image->get_width (), p_image->get_height ());
338349 Rect2 screenrect;
@@ -354,13 +365,13 @@ void RasterizerGLES3::set_boot_image(const Ref<Image> &p_image, const Color &p_c
354365 screenrect.position += ((Size2 (win_size.width , win_size.height ) - screenrect.size ) / 2.0 ).floor ();
355366 }
356367
357- GLES3::Texture *t = texture_storage. get_texture (texture);
358- glActiveTexture (GL_TEXTURE0 + config. max_texture_image_units - 1 );
368+ GLES3::Texture *t = texture_storage-> get_texture (texture);
369+ glActiveTexture (GL_TEXTURE0 + config-> max_texture_image_units - 1 );
359370 glBindTexture (GL_TEXTURE_2D, t->tex_id );
360371 glBindTexture (GL_TEXTURE_2D, 0 );
361- canvas. canvas_end ();
372+ canvas-> canvas_end ();
362373
363- texture_storage. texture_free (texture);
374+ texture_storage-> texture_free (texture);
364375
365376 end_frame (true );
366377}
0 commit comments