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 VL_INSTRUMENT_CLASS(vl::EdgeRenderer, Renderer)
00058
00059 class WFInfo: public Object
00060 {
00061 public:
00062 WFInfo(): mColor( vl::black ) {}
00063 fvec4 mColor;
00064 ref<Geometry> mGeometry;
00065 ref<EdgeUpdateCallback> mEdgeCallback;
00066 };
00067
00068 public:
00069 EdgeRenderer(): mLineWidth(1.0f), mPolygonOffsetFactor(1.0f), mPolygonOffsetUnits(1.0f), mCreaseAngle(44.0f), mShowHiddenLines(true), mShowCreases(true), mSmoothLines(true)
00070 {
00071 VL_DEBUG_SET_OBJECT_NAME()
00072 }
00073
00074 const RenderQueue* render(const RenderQueue* in_render_queue, Camera* camera, real frame_clock);
00075
00077 WFInfo* declareActor(Actor* act, const fvec4& color);
00079 WFInfo* declareActor(Actor* act);
00080
00084 void clearCache() { mActorCache.clear(); }
00085
00089 void setActorDirty(Actor* actor) { mActorCache.erase(actor); }
00090
00092 void setShowHiddenLines(bool show) { mShowHiddenLines = show; }
00094 bool showHiddenLines() const { return mShowHiddenLines; }
00095
00097 void setShowCreases(bool show) { mShowCreases = show; }
00099 bool showCreases() const { return mShowCreases; }
00100
00102 void setCreaseAngle(float degrees) { mCreaseAngle = degrees; }
00104 float creaseAngle() const { return mCreaseAngle; }
00105
00107 void setSmoothLines(bool smooth) { mSmoothLines = smooth; }
00109 bool smoothLines() const { return mSmoothLines; }
00110
00112 void setLineWidth(float width) { mLineWidth = width; }
00114 float lineWidth() const { return mLineWidth; }
00115
00117 void setDefaultLineColor(const fvec4& c) { mDefaultLineColor = c; }
00119 const fvec4& defaultLineColor() const { return mDefaultLineColor; }
00120
00122 void setPolygonOffsetFactor(float factor) { mPolygonOffsetFactor = factor; }
00124 float polygonOffsetFactor() const { return mPolygonOffsetFactor; }
00126 void setPolygonOffsetUnits(float units) { mPolygonOffsetUnits = units; }
00128 float polygonOffsetUnits() const { return mPolygonOffsetUnits; }
00129
00130 protected:
00131 void renderSolids(Camera* camera, real frame_clock);
00132 void renderLines(Camera* camera);
00133
00134 protected:
00135 std::map< ref<Actor>, ref<WFInfo> > mActorCache;
00136 std::map< ref<Actor>, ref<WFInfo> > mVisibleActors;
00137 fvec4 mDefaultLineColor;
00138 float mLineWidth;
00139 float mPolygonOffsetFactor;
00140 float mPolygonOffsetUnits;
00141 float mCreaseAngle;
00142 bool mShowHiddenLines;
00143 bool mShowCreases;
00144 bool mSmoothLines;
00145 };
00146
00147 }
00148
00149 #endif