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
00031
00032 #ifndef EdgeRenderer_INCLUDE_ONCE
00033 #define EdgeRenderer_INCLUDE_ONCE
00034
00035 #include <vlGraphics/Renderer.hpp>
00036 #include <vlGraphics/EdgeExtractor.hpp>
00037 #include <vlGraphics/EdgeUpdateCallback.hpp>
00038
00039 namespace vl
00040 {
00055 class VLGRAPHICS_EXPORT EdgeRenderer: public Renderer
00056 {
00057 class WFInfo: public Object
00058 {
00059 public:
00060 ref<Geometry> mGeometry;
00061 ref<EdgeUpdateCallback> mEdgeCallback;
00062 };
00063
00064 public:
00065 virtual const char* className() { return "vl::EdgeRenderer"; }
00066 EdgeRenderer(): mLineWidth(1.0f), mPolygonOffsetFactor(1.0f), mPolygonOffsetUnits(1.0f), mCreaseAngle(44.0f), mShowHiddenLines(true), mShowCreases(true), mSmoothLines(true)
00067 {
00068 VL_DEBUG_SET_OBJECT_NAME()
00069 }
00070
00071 const RenderQueue* render(const RenderQueue* in_render_queue, Camera* camera, Real frame_clock);
00072
00074 WFInfo* declareActor(Actor* act, const fvec4& color);
00076 WFInfo* declareActor(Actor* act);
00077
00081 void clearCache() { mActorCache.clear(); }
00082
00086 void setActorDirty(Actor* actor) { mActorCache.erase(actor); }
00087
00089 void setShowHiddenLines(bool show) { mShowHiddenLines = show; }
00091 bool showHiddenLines() const { return mShowHiddenLines; }
00092
00094 void setShowCreases(bool show) { mShowCreases = show; }
00096 bool showCreases() const { return mShowCreases; }
00097
00099 void setCreaseAngle(float degrees) { mCreaseAngle = degrees; }
00101 float creaseAngle() const { return mCreaseAngle; }
00102
00104 void setSmoothLines(bool smooth) { mSmoothLines = smooth; }
00106 bool smoothLines() const { return mSmoothLines; }
00107
00109 void setLineWidth(float width) { mLineWidth = width; }
00111 float lineWidth() const { return mLineWidth; }
00112
00114 void setDefaultLineColor(const fvec4& c) { mDefaultLineColor = c; }
00116 const fvec4& defaultLineColor() const { return mDefaultLineColor; }
00117
00119 void setPolygonOffsetFactor(float factor) { mPolygonOffsetFactor = factor; }
00121 float polygonOffsetFactor() const { return mPolygonOffsetFactor; }
00123 void setPolygonOffsetUnits(float units) { mPolygonOffsetUnits = units; }
00125 float polygonOffsetUnits() const { return mPolygonOffsetUnits; }
00126
00127 protected:
00128 void renderSolids(Camera* camera, Real frame_clock);
00129 void renderLines(Camera* camera);
00130
00131 protected:
00132 std::map< ref<Actor>, ref<WFInfo> > mActorCache;
00133 std::map< ref<Actor>, ref<WFInfo> > mVisibleActors;
00134 fvec4 mDefaultLineColor;
00135 float mLineWidth;
00136 float mPolygonOffsetFactor;
00137 float mPolygonOffsetUnits;
00138 float mCreaseAngle;
00139 bool mShowHiddenLines;
00140 bool mShowCreases;
00141 bool mSmoothLines;
00142 };
00143
00144 }
00145
00146 #endif