diff options
author | gman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-17 08:01:28 +0000 |
---|---|---|
committer | gman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-17 08:01:28 +0000 |
commit | 8e1c8a07890b2c122833c402d01e91e54540984c (patch) | |
tree | 6225cd0d1af14141ae141c3a0d3d5912af0f7eb6 /o3d/core/cross/primitive.cc | |
parent | fc9384590f192b79b4f6f071a5b1fc3257f45c28 (diff) | |
download | chromium_src-8e1c8a07890b2c122833c402d01e91e54540984c.zip chromium_src-8e1c8a07890b2c122833c402d01e91e54540984c.tar.gz chromium_src-8e1c8a07890b2c122833c402d01e91e54540984c.tar.bz2 |
Change StreamBank to inherit from VertexSource
in preparation for Morph Targets
Review URL: http://codereview.chromium.org/164483
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23541 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/core/cross/primitive.cc')
-rw-r--r-- | o3d/core/cross/primitive.cc | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/o3d/core/cross/primitive.cc b/o3d/core/cross/primitive.cc index 19ccfa1..b47015a 100644 --- a/o3d/core/cross/primitive.cc +++ b/o3d/core/cross/primitive.cc @@ -36,7 +36,7 @@ #include "core/cross/primitive.h" #include "core/cross/renderer.h" #include "core/cross/error.h" -#include "core/cross/vertex_source.h" +#include "core/cross/stream_bank.h" namespace o3d { @@ -94,6 +94,48 @@ Primitive::Primitive(ServiceLocator* service_locator) Primitive::~Primitive() { } +void Primitive::Render(Renderer* renderer, + DrawElement* draw_element, + Material* material, + ParamObject* override, + ParamCache* param_cache) { + DLOG_ASSERT(draw_element); + DLOG_ASSERT(param_cache); + // If there's no material attached to this Shape. + if (!material) { + O3D_ERROR(service_locator()) << "No Material attached to Shape \"" + << draw_element->name() << "\""; + return; + } + + Effect* effect = material->effect(); + if (!effect) { + O3D_ERROR(service_locator()) << "No Effect attached to Material '" + << material->name() << "' in Shape '" + << draw_element->name() << "'"; + return; + } + + StreamBank* bank = stream_bank(); + if (!bank) { + O3D_ERROR(service_locator()) + << "No StreambBank attached to Primitive '" + << material->name() << "' in Shape '" + << draw_element->name() << "'"; + return; + } + + if (!bank->renderable()) { + O3D_ERROR(service_locator()) + << "StreamBank has non-renderable buffers '" + << bank->name() << "'"; + return; + } + + PlatformSpecificRender(renderer, draw_element, material, override, + param_cache); +} + namespace { // A class to make it easy to access floats from a buffer given a stream. |