| 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 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 IncrementDrawElementsRendered(); | 722 IncrementDrawElementsRendered(); |
| 723 State *current_state = material ? material->state() : NULL; | 723 State *current_state = material ? material->state() : NULL; |
| 724 PushRenderStates(current_state); | 724 PushRenderStates(current_state); |
| 725 ApplyDirtyStates(); | 725 ApplyDirtyStates(); |
| 726 element->Render(this, draw_element, material, override, param_cache); | 726 element->Render(this, draw_element, material, override, param_cache); |
| 727 PopRenderStates(); | 727 PopRenderStates(); |
| 728 } | 728 } |
| 729 | 729 |
| 730 // Pushes rendering states. | 730 // Pushes rendering states. |
| 731 void Renderer::PushRenderStates(State *state) { | 731 void Renderer::PushRenderStates(State *state) { |
| 732 #if !defined(RENDERER_CAIRO) |
| 732 DCHECK(!state_stack_.empty()); | 733 DCHECK(!state_stack_.empty()); |
| 733 if (state && (state_stack_.back() != state)) { | 734 if (state && (state_stack_.back() != state)) { |
| 734 const NamedParamRefMap& param_map = state->params(); | 735 const NamedParamRefMap& param_map = state->params(); |
| 735 NamedParamRefMap::const_iterator end(param_map.end()); | 736 NamedParamRefMap::const_iterator end(param_map.end()); |
| 736 for (NamedParamRefMap::const_iterator iter(param_map.begin()); | 737 for (NamedParamRefMap::const_iterator iter(param_map.begin()); |
| 737 iter != end; | 738 iter != end; |
| 738 ++iter) { | 739 ++iter) { |
| 739 Param* param = iter->second.Get(); | 740 Param* param = iter->second.Get(); |
| 740 const StateHandler* state_handler = GetStateHandler(param); | 741 const StateHandler* state_handler = GetStateHandler(param); |
| 741 if (state_handler) { | 742 if (state_handler) { |
| 742 state_handler->SetState(this, param); | 743 state_handler->SetState(this, param); |
| 743 state_param_stacks_[state_handler->index()].push_back(param); | 744 state_param_stacks_[state_handler->index()].push_back(param); |
| 744 } | 745 } |
| 745 } | 746 } |
| 746 } | 747 } |
| 747 // If the state is null, push top state since that's that state | 748 // If the state is null, push top state since that's that state |
| 748 // that represents our current situation. | 749 // that represents our current situation. |
| 749 if (!state) { | 750 if (!state) { |
| 750 state = state_stack_.back(); | 751 state = state_stack_.back(); |
| 751 } | 752 } |
| 752 state_stack_.push_back(state); | 753 state_stack_.push_back(state); |
| 754 #endif |
| 753 } | 755 } |
| 754 | 756 |
| 755 // Pops rendering states to back to their previous settings. | 757 // Pops rendering states to back to their previous settings. |
| 756 void Renderer::PopRenderStates() { | 758 void Renderer::PopRenderStates() { |
| 757 DCHECK_GT(state_stack_.size(), 1u); | 759 DCHECK_GT(state_stack_.size(), 1u); |
| 758 if (state_stack_.back() != state_stack_[state_stack_.size() - 2]) { | 760 if (state_stack_.back() != state_stack_[state_stack_.size() - 2]) { |
| 759 State* state = state_stack_.back(); | 761 State* state = state_stack_.back(); |
| 760 // restore the states the top state object set. | 762 // restore the states the top state object set. |
| 761 const NamedParamRefMap& param_map = state->params(); | 763 const NamedParamRefMap& param_map = state->params(); |
| 762 NamedParamRefMap::const_iterator end(param_map.end()); | 764 NamedParamRefMap::const_iterator end(param_map.end()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 bool Renderer::SafeToBindTexture(Texture* texture) const { | 823 bool Renderer::SafeToBindTexture(Texture* texture) const { |
| 822 if (current_render_surface_ && | 824 if (current_render_surface_ && |
| 823 current_render_surface_->texture() == texture) { | 825 current_render_surface_->texture() == texture) { |
| 824 return false; | 826 return false; |
| 825 } | 827 } |
| 826 | 828 |
| 827 return true; | 829 return true; |
| 828 } | 830 } |
| 829 | 831 |
| 830 } // namespace o3d | 832 } // namespace o3d |
| OLD | NEW |