Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef RVE_RENDER_SERVER_TRIANGLES_RENDERER_H
00031 #define RVE_RENDER_SERVER_TRIANGLES_RENDERER_H
00032
00033 #include <OGRE/OgreSimpleRenderable.h>
00034 #include <OGRE/OgreMaterial.h>
00035
00036 #include "batch_renderer.h"
00037 #include "batch_renderable.h"
00038 #include "triangles_renderer_desc.h"
00039
00040 #include <ros/message_forward.h>
00041
00042 namespace Ogre
00043 {
00044 class SceneManager;
00045 class SceneNode;
00046 }
00047
00048 namespace rve_msgs
00049 {
00050 ROS_DECLARE_MESSAGE(Triangles);
00051 }
00052
00053 namespace rve_render_server
00054 {
00055
00056 class TrianglesRenderer;
00057 class TrianglesRenderable : public BatchRenderable<TrianglesRenderable, TrianglesRendererDesc>
00058 {
00059 typedef BatchRenderable<TrianglesRenderable, TrianglesRendererDesc> Parent;
00060
00061 public:
00062 TrianglesRenderable(const TrianglesRendererDesc& desc, bool alpha);
00063 ~TrianglesRenderable();
00064
00065 void add(const rve_common::UUID& id, const rve_msgs::Triangles& triangles, uint32_t start, uint32_t& out_start, uint32_t& out_count);
00066 void remove(uint32_t start, uint32_t count);
00067
00068 uint32_t getElementsPerVBO();
00069
00070 virtual Picked translatePick(PickRenderValues id) { return Picked(); }
00071
00072 private:
00073
00074 uint32_t getVertexStride();
00075 };
00076 typedef boost::shared_ptr<TrianglesRenderable> TrianglesRenderablePtr;
00077 typedef std::vector<TrianglesRenderablePtr> V_TrianglesRenderable;
00078
00079 class TrianglesRenderer : public BatchRenderer<TrianglesRenderer, rve_msgs::Triangles, TrianglesRenderable, TrianglesRendererDesc>
00080 {
00081 typedef BatchRenderer<TrianglesRenderer, rve_msgs::Triangles, TrianglesRenderable, TrianglesRendererDesc> Parent;
00082
00083 public:
00084 TrianglesRenderer(Ogre::SceneManager* scene_manager, const TrianglesRendererDesc& desc);
00085
00086 std::pair<Ogre::MaterialPtr, Ogre::MaterialPtr> createMaterials(const TrianglesRendererDesc& desc);
00087 size_t getInputCount(const rve_msgs::Triangles& triangles);
00088 };
00089
00090 }
00091
00092 #endif // RVE_RENDER_SERVER_TRIANGLES_RENDERER_H