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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 << "You can not create a floating point texture unless you request " | 86 << "You can not create a floating point texture unless you request " |
87 << "support for floating point textures when you initialize O3D."; | 87 << "support for floating point textures when you initialize O3D."; |
88 return false; | 88 return false; |
89 } | 89 } |
90 return true; | 90 return true; |
91 } | 91 } |
92 | 92 |
93 } // anonymous namespace | 93 } // anonymous namespace |
94 | 94 |
95 Renderer::Renderer(ServiceLocator* service_locator) | 95 Renderer::Renderer(ServiceLocator* service_locator) |
96 : service_locator_(service_locator), | 96 : supports_npot_(false), |
97 service_(service_locator, this), | |
98 features_(service_locator), | |
99 supports_npot_(false), | |
100 clear_client_(true), | 97 clear_client_(true), |
101 need_to_render_(true), | 98 need_to_render_(true), |
102 current_render_surface_(NULL), | 99 current_render_surface_(NULL), |
103 current_depth_surface_(NULL), | 100 current_depth_surface_(NULL), |
104 render_frame_count_(0), | 101 render_frame_count_(0), |
105 transforms_processed_(0), | 102 transforms_processed_(0), |
106 transforms_culled_(0), | 103 transforms_culled_(0), |
107 draw_elements_processed_(0), | 104 draw_elements_processed_(0), |
108 draw_elements_culled_(0), | 105 draw_elements_culled_(0), |
109 draw_elements_rendered_(0), | 106 draw_elements_rendered_(0), |
110 primitives_rendered_(0), | 107 primitives_rendered_(0), |
| 108 viewport_(0.0f, 0.0f, 1.0f, 1.0f), |
| 109 depth_range_(0.0f, 1.0f), |
| 110 service_locator_(service_locator), |
| 111 service_(service_locator, this), |
| 112 features_(service_locator), |
111 width_(0), | 113 width_(0), |
112 height_(0), | 114 height_(0), |
113 render_width_(0), | 115 render_width_(0), |
114 render_height_(0), | 116 render_height_(0), |
115 viewport_(0.0f, 0.0f, 1.0f, 1.0f), | |
116 depth_range_(0.0f, 1.0f), | |
117 dest_x_offset_(0), | 117 dest_x_offset_(0), |
118 dest_y_offset_(0) { | 118 dest_y_offset_(0) { |
119 } | 119 } |
120 | 120 |
121 Renderer::~Renderer() { | 121 Renderer::~Renderer() { |
122 // Delete all the state handlers. | 122 // Delete all the state handlers. |
123 while (!state_handler_map_.empty()) { | 123 while (!state_handler_map_.empty()) { |
124 delete state_handler_map_.begin()->second; | 124 delete state_handler_map_.begin()->second; |
125 state_handler_map_.erase(state_handler_map_.begin()); | 125 state_handler_map_.erase(state_handler_map_.begin()); |
126 } | 126 } |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 StateHandlerMap::const_iterator iter = state_handler_map_.find(state_name); | 384 StateHandlerMap::const_iterator iter = state_handler_map_.find(state_name); |
385 return iter != state_handler_map_.end() ? iter->second->GetClass() : NULL; | 385 return iter != state_handler_map_.end() ? iter->second->GetClass() : NULL; |
386 } | 386 } |
387 | 387 |
388 // Set initial render states on device creation/reset. | 388 // Set initial render states on device creation/reset. |
389 void Renderer::SetInitialStates() { | 389 void Renderer::SetInitialStates() { |
390 for (StateHandlerMap::iterator it = state_handler_map_.begin(); | 390 for (StateHandlerMap::iterator it = state_handler_map_.begin(); |
391 it != state_handler_map_.end(); ++it) { | 391 it != state_handler_map_.end(); ++it) { |
392 StateHandler *state_handler = it->second; | 392 StateHandler *state_handler = it->second; |
393 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; | 393 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; |
394 DCHECK_EQ(param_stack.size(), 1); | 394 DCHECK_EQ(param_stack.size(), 1u); |
395 state_handler->SetState(this, param_stack[0]); | 395 state_handler->SetState(this, param_stack[0]); |
396 } | 396 } |
397 } | 397 } |
398 | 398 |
399 template <class ParamType> | 399 template <class ParamType> |
400 void CreateStateParam(State *state, | 400 void CreateStateParam(State *state, |
401 const String &name, | 401 const String &name, |
402 const typename ParamType::DataType &value) { | 402 const typename ParamType::DataType &value) { |
403 ParamType *param = state->GetStateParam<ParamType>(name); | 403 ParamType *param = state->GetStateParam<ParamType>(name); |
404 DCHECK(param); | 404 DCHECK(param); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 Param* param = iter->second.Get(); | 532 Param* param = iter->second.Get(); |
533 const StateHandler* state_handler = GetStateHandler(param); | 533 const StateHandler* state_handler = GetStateHandler(param); |
534 DCHECK(state_handler); | 534 DCHECK(state_handler); |
535 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; | 535 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; |
536 DCHECK(param_stack.empty()); | 536 DCHECK(param_stack.empty()); |
537 param_stack.push_back(param); | 537 param_stack.push_back(param); |
538 } | 538 } |
539 } | 539 } |
540 | 540 |
541 void Renderer::RemoveDefaultStates() { | 541 void Renderer::RemoveDefaultStates() { |
542 DCHECK_EQ(state_stack_.size(), 1); | 542 DCHECK_EQ(state_stack_.size(), 1u); |
543 DCHECK(state_stack_[0] == default_state_); | 543 DCHECK(state_stack_[0] == default_state_); |
544 state_stack_.clear(); | 544 state_stack_.clear(); |
545 const NamedParamRefMap& param_map = default_state_->params(); | 545 const NamedParamRefMap& param_map = default_state_->params(); |
546 NamedParamRefMap::const_iterator end(param_map.end()); | 546 NamedParamRefMap::const_iterator end(param_map.end()); |
547 for (NamedParamRefMap::const_iterator iter(param_map.begin()); | 547 for (NamedParamRefMap::const_iterator iter(param_map.begin()); |
548 iter != end; | 548 iter != end; |
549 ++iter) { | 549 ++iter) { |
550 Param* param = iter->second.Get(); | 550 Param* param = iter->second.Get(); |
551 const StateHandler* state_handler = GetStateHandler(param); | 551 const StateHandler* state_handler = GetStateHandler(param); |
552 DCHECK(state_handler); | 552 DCHECK(state_handler); |
553 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; | 553 ParamVector& param_stack = state_param_stacks_[state_handler->index()]; |
554 DCHECK_EQ(param_stack.size(), 1); | 554 DCHECK_EQ(param_stack.size(), 1u); |
555 DCHECK(param_stack[0] == param); | 555 DCHECK(param_stack[0] == param); |
556 param_stack.clear(); | 556 param_stack.clear(); |
557 } | 557 } |
558 default_state_.Reset(); | 558 default_state_.Reset(); |
559 } | 559 } |
560 | 560 |
561 const Renderer::StateHandler* Renderer::GetStateHandler(Param* param) const { | 561 const Renderer::StateHandler* Renderer::GetStateHandler(Param* param) const { |
562 if (param->handle()) { | 562 if (param->handle()) { |
563 return static_cast<const StateHandler *>((param->handle())); | 563 return static_cast<const StateHandler *>((param->handle())); |
564 } else { | 564 } else { |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 bool Renderer::SafeToBindTexture(Texture* texture) const { | 658 bool Renderer::SafeToBindTexture(Texture* texture) const { |
659 if (current_render_surface_ && | 659 if (current_render_surface_ && |
660 current_render_surface_->texture() == texture) { | 660 current_render_surface_->texture() == texture) { |
661 return false; | 661 return false; |
662 } | 662 } |
663 | 663 |
664 return true; | 664 return true; |
665 } | 665 } |
666 | 666 |
667 } // namespace o3d | 667 } // namespace o3d |
OLD | NEW |