OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 | 92 |
93 } // anonymous namespace | 93 } // anonymous namespace |
94 | 94 |
95 // Returns whether to Force the Software Renderer by checking for the existence | 95 // Returns whether to Force the Software Renderer by checking for the existence |
96 // of the environment variable O3D_FORCE_SOFTWARE_RENDERER. | 96 // of the environment variable O3D_FORCE_SOFTWARE_RENDERER. |
97 bool Renderer::IsForceSoftwareRenderer() { | 97 bool Renderer::IsForceSoftwareRenderer() { |
98 return getenv("O3D_FORCE_SOFTWARE_RENDERER") != NULL; | 98 return getenv("O3D_FORCE_SOFTWARE_RENDERER") != NULL; |
99 } | 99 } |
100 | 100 |
101 Renderer::Renderer(ServiceLocator* service_locator) | 101 Renderer::Renderer(ServiceLocator* service_locator) |
102 : current_render_surface_(NULL), | 102 : service_locator_(service_locator), |
| 103 service_(service_locator, this), |
| 104 features_(service_locator), |
| 105 current_render_surface_(NULL), |
103 current_depth_surface_(NULL), | 106 current_depth_surface_(NULL), |
104 current_render_surface_is_back_buffer_(true), | 107 current_render_surface_is_back_buffer_(true), |
105 service_locator_(service_locator), | |
106 service_(service_locator, this), | |
107 features_(service_locator), | |
108 viewport_(0.0f, 0.0f, 1.0f, 1.0f), | 108 viewport_(0.0f, 0.0f, 1.0f, 1.0f), |
109 depth_range_(0.0f, 1.0f), | 109 depth_range_(0.0f, 1.0f), |
110 write_mask_(0xf), | 110 write_mask_(0xf), |
111 render_frame_count_(0), | 111 render_frame_count_(0), |
112 transforms_processed_(0), | 112 transforms_processed_(0), |
113 transforms_culled_(0), | 113 transforms_culled_(0), |
114 draw_elements_processed_(0), | 114 draw_elements_processed_(0), |
115 draw_elements_culled_(0), | 115 draw_elements_culled_(0), |
116 draw_elements_rendered_(0), | 116 draw_elements_rendered_(0), |
117 primitives_rendered_(0), | 117 primitives_rendered_(0), |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 } | 301 } |
302 | 302 |
303 void Renderer::FinishRendering() { | 303 void Renderer::FinishRendering() { |
304 DCHECK(rendering_); | 304 DCHECK(rendering_); |
305 DCHECK(!drawing_); | 305 DCHECK(!drawing_); |
306 DCHECK_GT(start_depth_, 0); | 306 DCHECK_GT(start_depth_, 0); |
307 --start_depth_; | 307 --start_depth_; |
308 if (start_depth_ == 0) { | 308 if (start_depth_ == 0) { |
309 ApplyDirtyStates(); | 309 ApplyDirtyStates(); |
310 PlatformSpecificFinishRendering(); | 310 PlatformSpecificFinishRendering(); |
| 311 // Don't hold pointers to these when we are finished rendering. |
| 312 current_render_surface_ = NULL; |
| 313 current_depth_surface_ = NULL; |
311 rendering_ = false; | 314 rendering_ = false; |
312 } | 315 } |
313 } | 316 } |
314 | 317 |
315 void Renderer::Present() { | 318 void Renderer::Present() { |
316 DCHECK(!rendering_); | 319 DCHECK(!rendering_); |
317 DCHECK(!drawing_); | 320 DCHECK(!drawing_); |
318 PlatformSpecificPresent(); | 321 PlatformSpecificPresent(); |
319 } | 322 } |
320 | 323 |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 bool Renderer::SafeToBindTexture(Texture* texture) const { | 816 bool Renderer::SafeToBindTexture(Texture* texture) const { |
814 if (current_render_surface_ && | 817 if (current_render_surface_ && |
815 current_render_surface_->texture() == texture) { | 818 current_render_surface_->texture() == texture) { |
816 return false; | 819 return false; |
817 } | 820 } |
818 | 821 |
819 return true; | 822 return true; |
820 } | 823 } |
821 | 824 |
822 } // namespace o3d | 825 } // namespace o3d |
OLD | NEW |