Developer Documentation
|
#include <AC>
Public Types | |
typedef PolyLine::Point | Point |
![]() | |
enum | StatusMode { Active = 0x1 , HideNode = 0x2 , HideChildren = 0x4 , HideSubtree = 0x8 } |
Status modi. More... | |
enum | TraverseMode { NodeFirst = 0x1 , ChildrenFirst = 0x2 , SecondPass = 0x4 } |
Node traverse types. More... | |
typedef std::vector< BaseNode * >::const_iterator | ConstChildIter |
allows to iterate over children More... | |
typedef std::vector< BaseNode * >::iterator | ChildIter |
allows to iterate over children More... | |
typedef std::vector< BaseNode * >::const_reverse_iterator | ConstChildRIter |
allows to reverse iterate over children More... | |
typedef std::vector< BaseNode * >::reverse_iterator | ChildRIter |
allows to reverse iterate over children More... | |
enum | PASSES { NOPASS = 0 , ALLPASSES = 1 << 0 , PASS_1 = 1 << 1 , PASS_2 = 1 << 2 , PASS_3 = 1 << 3 , PASS_4 = 1 << 4 , PASS_5 = 1 << 5 , PASS_6 = 1 << 6 , PASS_7 = 1 << 7 , PASS_8 = 1 << 8 } |
This enum should be used to enable rendering of a node in different. More... | |
typedef unsigned int | MultipassBitMask |
Multipass pass bit mask type. More... | |
Public Member Functions | |
PolyLineNodeT (PolyLine &_pl, BaseNode *_parent=0, std::string _name="<PolyLineNode>") | |
Constructor. More... | |
~PolyLineNodeT () | |
Destructor. More... | |
PolyLine & | polyline () |
ACG_CLASSNAME (PolyLineNodeT) | |
static name of this class | |
DrawModes::DrawMode | availableDrawModes () const override |
return available draw modes More... | |
void | boundingBox (Vec3d &_bbMin, Vec3d &_bbMax) override |
update bounding box More... | |
void | draw (GLState &, const DrawModes::DrawMode &_drawMode) override |
draw lines and normals More... | |
void | pick (GLState &_state, PickTarget _target) override |
picking More... | |
void | getRenderObjects (ACG::IRenderer *_renderer, ACG::GLState &_state, const ACG::SceneGraph::DrawModes::DrawMode &_drawMode, const ACG::SceneGraph::Material *_mat) override |
Add the objects to the given renderer. More... | |
void | update () |
Trigger an update of the vbo. More... | |
int | addCustomBuffer (const ACG::VertexElement &_desc, const void *_buffer) |
void | setCustomBuffer (int _id, const void *_buffer) |
void | setupVertexDeclaration (VertexDeclaration *_dst, int _colorSource) const |
Create the vertex declaration. More... | |
size_t | fillVertexBuffer (void *_buf, size_t _bufSize, bool _addLineStripEndVertex) |
Fill a buffer with vertex data. More... | |
![]() | |
BaseNode (BaseNode *_parent=0, std::string _name="<unknown>") | |
Default constructor. More... | |
BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>") | |
Put this node between _parent and _child. More... | |
virtual | ~BaseNode () |
Destructor. More... | |
void | delete_subtree () |
Delete the whole subtree of this node. More... | |
virtual const std::string & | className () const =0 |
Return class name (implemented by the ACG_CLASSNAME macro) | |
virtual DrawModes::DrawMode | availableDrawModes () const |
virtual void | boundingBox (Vec3d &, Vec3d &) |
virtual void | enter (GLState &, const DrawModes::DrawMode &) |
virtual void | enter (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode) |
virtual void | draw (GLState &, const DrawModes::DrawMode &) |
Draw this node using the draw modes _drawMode. More... | |
virtual void | getRenderObjects (IRenderer *_renderer, GLState &_state, const DrawModes::DrawMode &_drawMode, const Material *_mat) |
Deferred draw call with shader based renderer. More... | |
virtual void | leave (GLState &, const DrawModes::DrawMode &) |
virtual void | leave (IRenderer *, GLState &_state, const DrawModes::DrawMode &_drawMode) |
virtual void | enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) |
virtual void | pick (GLState &, PickTarget) |
virtual void | leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) |
void | enablePicking (bool _enable) |
bool | pickingEnabled () |
virtual void | mouseEvent (GLState &, QMouseEvent *) |
Handle mouse event (some interaction, e.g. modeling) More... | |
void | setDirty (bool _dirty=true) |
mark node for redrawn More... | |
bool | isDirty () const |
Check if node should be redrawn. More... | |
ChildIter | childrenBegin () |
Returns: begin-iterator of children. More... | |
ConstChildIter | childrenBegin () const |
Same but cont . More... | |
ChildIter | childrenEnd () |
Returns: end-iterator of children. More... | |
ConstChildIter | childrenEnd () const |
Same but const . More... | |
ChildRIter | childrenRBegin () |
Returns: reverse begin-iterator of children. More... | |
ConstChildRIter | childrenRBegin () const |
Same but const. More... | |
ChildRIter | childrenREnd () |
Returns: reverse end-iterator of children. More... | |
ConstChildRIter | childrenREnd () const |
Same but const . More... | |
void | push_back (BaseNode *_node) |
Insert _node at the end of the list of children. More... | |
void | remove (ChildIter _pos) |
size_t | nChildren () const |
number of children More... | |
ChildIter | find (BaseNode *_node) |
BaseNode * | find (const std::string &_name) |
BaseNode * | parent () |
Get the nodes parent node. More... | |
const BaseNode * | parent () const |
Get the nodes parent node. More... | |
void | set_parent (BaseNode *_parent) |
Set the parent of this node. More... | |
StatusMode | status () const |
Get node's status. More... | |
void | set_status (StatusMode _s) |
Set the status of this node. More... | |
void | hide () |
Hide Node: set status to HideNode. More... | |
void | show () |
Show node: set status to Active. More... | |
bool | visible () |
Is node visible (status == Active)? More... | |
bool | hidden () |
Is node not visible (status != Active)? More... | |
std::string | name () const |
Returns: name of node (needs not be unique) More... | |
void | name (const std::string &_name) |
rename a node More... | |
unsigned int | id () const |
DrawModes::DrawMode | drawMode () const |
Return the own draw modes of this node. More... | |
void | drawMode (DrawModes::DrawMode _drawMode) |
unsigned int | traverseMode () const |
Return how the node should be traversed. More... | |
void | setTraverseMode (unsigned int _mode) |
Set traverse mode for node. More... | |
MultipassBitMask | multipassStatus () const |
Get the current multipass settings for the nodes status functions. More... | |
void | setMultipassStatus (const MultipassBitMask _passStatus) |
Set multipass settings for the nodes status functions. More... | |
void | multipassStatusSetActive (const unsigned int _i, bool _active) |
Set multipass status to traverse in a specific pass. More... | |
bool | multipassStatusActive (const unsigned int _i) const |
Get multipass status to traverse in a specific pass. More... | |
MultipassBitMask | multipassNode () const |
Get the current multipass settings for the node. More... | |
void | setMultipassNode (const MultipassBitMask _passNode) |
Set multipass settings for the node. More... | |
void | multipassNodeSetActive (const unsigned int _i, bool _active) |
Set Node status to traverse in a specific pass. More... | |
bool | multipassNodeActive (const unsigned int _i) const |
Get Node status to traverse in a specific pass. More... | |
void | setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON) |
Set custom shaders. More... | |
void | setRenderObjectShaders (const std::string &_vertexShaderFile, const std::string &_tessControlShaderFile, const std::string &_tessEvalShaderFile, const std::string &_geometryShaderFile, const std::string &_fragmentShaderFile, bool _relativePaths=true, DrawModes::DrawModePrimitive _primitiveType=DrawModes::PRIMITIVE_POLYGON) |
Set custom shaders. More... | |
void | setRenderObjectUniformPool (const GLSL::UniformPool *_pool) |
Set uniforms for shader based rendering. More... | |
const GLSL::UniformPool * | getRenderObjectUniformPool () |
Get uniforms for shader based rendering. More... | |
void | setRenderObjectTexture (int _samplerSlot, GLuint _texId, GLenum _texType=GL_TEXTURE_2D) |
Set textures for shader based rendering. More... | |
void | setRenderObjectModifier (RenderObjectModifier *_modifier) |
Set modifier for render objects. More... | |
RenderObjectModifier * | getRenderObjectModifier () |
Get render-object modifier. More... | |
void | applyRenderObjectSettings (DrawModes::DrawModePrimitive _primitive, RenderObject *_obj) const |
Set shaders, textures and uniforms as provided by user to a render-object. More... | |
Private Member Functions | |
void | pick_vertices (GLState &_state) |
void | pick_spheres (GLState &_state) |
void | pick_spheres_screen (GLState &_state) |
void | pick_edges (GLState &_state, unsigned int _offset) |
PolyLineNodeT (const PolyLineNodeT &_rhs) | |
Copy constructor (not used) | |
PolyLineNodeT & | operator= (const PolyLineNodeT &_rhs) |
Assignment operator (not used) | |
void | updateVBO () |
Trigger an update of the vbo. More... | |
void | writeVertex (unsigned int _vertex, void *_dst) |
Write vertex data for rendering to a buffer. More... | |
void | writeVertexColor (unsigned int _vertex, bool _colorSourceVertex, void *_dst) const |
Write color for rendering to a buffer. More... | |
Private Attributes | |
ACG::VertexDeclaration | vertexDecl_ |
Vertex layout without vertex colors. More... | |
ACG::VertexDeclaration | vertexDeclVCol_ |
Vertex layout with vertex colors. More... | |
ACG::VertexDeclaration | vertexDeclECol_ |
Vertex layout with edge colors. More... | |
std::vector< std::pair< ACG::VertexElement, const void * > > | customBuffers_ |
Custom vertex data for shader based rendering. More... | |
std::map< typename PolyLine::CustomPropertyHandle, int > | polylinePropMap_ |
Map from custom properties in PolyLine to id in customBuffers_. More... | |
PolyLine & | polyline_ |
The associated poly line. More... | |
GeometryBuffer | vbo_ |
VBO used to render the poly line. More... | |
std::vector< unsigned int > | selectedVertexIndexBuffer_ |
Index buffer for selected vertices. More... | |
std::vector< unsigned int > | selectedEdgeIndexBuffer_ |
Index buffer for selected edges. More... | |
bool | updateVBO_ |
Flag to trigger update of vbo. More... | |
GLSphere * | sphere_ |
Sphere for VertexSphere DrawMode. More... | |
DrawModes::DrawMode | POINTS_SPHERES |
This defines a local point spheres draw mode for all polyLine nodes. More... | |
DrawModes::DrawMode | POINTS_SPHERES_SCREEN |
This defines a local point spheres draw mode for all polyLine nodes with constant screen size. More... | |
/.../PolyLineNodeT.hh>
Brief Description.
A more elaborate description follows.
/.../PolyLineCollectionNodeT.hh>
This Node provides support for rendering polyline collections.
Definition at line 89 of file PolyLineNodeT.hh.
typedef PolyLine::Point ACG::SceneGraph::PolyLineNodeT< PolyLine >::Point |
Definition at line 94 of file PolyLineNodeT.hh.
ACG::SceneGraph::PolyLineNodeT< PolyLine >::PolyLineNodeT | ( | PolyLine & | _pl, |
BaseNode * | _parent = 0 , |
||
std::string | _name = "<PolyLineNode>" |
||
) |
Constructor.
Definition at line 72 of file PolyLineNodeT_impl.hh.
ACG::SceneGraph::PolyLineNodeT< PolyLine >::~PolyLineNodeT |
Destructor.
Definition at line 98 of file PolyLineNodeT_impl.hh.
int ACG::SceneGraph::PolyLineNodeT< PolyLine >::addCustomBuffer | ( | const ACG::VertexElement & | _desc, |
const void * | _buffer | ||
) |
Add custom data to the vertex buffer for rendering with shaders
The element description declares the type of data and the name in the shader. The provided buffer has to store data for each vertex: num elements in buffer = polyline().n_vertices() If the stride offset in desc.pointer is 0, it is assumed that the buffer stores the data without memory alignment. This function does not create a local copy of the buffer, so the provided memory address has to be valid whenever an internal vbo update is triggered. Custom attributes are then available in the vertex shader by accessing the input with name tangentElement.shaderInputName_.
Example:
in plugin: have allocated buffer: tangentData_ of type Vec3f* (member of a class)
ACG::VertexElement tangentDesc; tangentDesc.type_ = GL_FLOAT; tangentDesc.numElements_ = 3; tangentDesc.usage_ = ACG::VERTEX_USAGE_USER_DEFINED; tangentDesc.shaderInputName_ = "myTangent"; tangentDesc.pointer_ = 0;
polylineNode->addCustomBuffer(tangentDesc, tangentData_);
in vertex shader: in vec3 myTangent; ..
_desc | type description of an element in the buffer |
_buffer | pointer to data buffer, has to be a valid address for the remaining time |
Definition at line 1132 of file PolyLineNodeT_impl.hh.
|
overridevirtual |
return available draw modes
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 123 of file PolyLineNodeT_impl.hh.
|
overridevirtual |
update bounding box
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 107 of file PolyLineNodeT_impl.hh.
|
overridevirtual |
draw lines and normals
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 135 of file PolyLineNodeT_impl.hh.
size_t ACG::SceneGraph::PolyLineNodeT< PolyLine >::fillVertexBuffer | ( | void * | _buf, |
size_t | _bufSize, | ||
bool | _addLineStripEndVertex | ||
) |
Fill a buffer with vertex data.
Fill the specified buffer with vertex buffer data. The buffer size in bytes can be calculated as vertex stride * num vertices. If _addLineStripEndVertex is true, then the buffer size is vertex stride * (num vertices + 1) instead. Vertex layout and stride can be queried with via setupVertexDeclaration.
_buf | address to buffer to which the vertices are written |
_bufSize | size in bytes available in the specified buffer |
_addLineStripEndVertex | add a copy of the first vertex to the end of the buffer (useful to close the line in line_strip rendering mode) |
Definition at line 690 of file PolyLineNodeT_impl.hh.
|
overridevirtual |
Add the objects to the given renderer.
_renderer | The renderer which will be used. Add your geometry into this class |
_state | The current GL State when this object is called |
_drawMode | The active draw mode |
_mat | Current material |
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 892 of file PolyLineNodeT_impl.hh.
|
overridevirtual |
picking
Reimplemented from ACG::SceneGraph::BaseNode.
Definition at line 363 of file PolyLineNodeT_impl.hh.
|
private |
Definition at line 558 of file PolyLineNodeT_impl.hh.
|
private |
Definition at line 508 of file PolyLineNodeT_impl.hh.
|
private |
Definition at line 528 of file PolyLineNodeT_impl.hh.
|
private |
Definition at line 441 of file PolyLineNodeT_impl.hh.
|
inline |
Definition at line 102 of file PolyLineNodeT.hh.
void ACG::SceneGraph::PolyLineNodeT< PolyLine >::setCustomBuffer | ( | int | _id, |
const void * | _buffer | ||
) |
Update pointer to custom data
_id | id of the custom buffer; return value of addCustomBuffer |
_buffer | pointer to data buffer, has to be a valid address for the remaining time |
Definition at line 1152 of file PolyLineNodeT_impl.hh.
void ACG::SceneGraph::PolyLineNodeT< PolyLine >::setupVertexDeclaration | ( | VertexDeclaration * | _dst, |
int | _colorSource | ||
) | const |
Create the vertex declaration.
The vertex data in the vbo contains both vertex and edge colors, so the vertex declaration decides which bytes to use for colored rendering (if any).
_dst | Vertex declaration to initialize |
_colorSource | 0 - no colors, 1 - vertex colors, 2 - edge colors |
Definition at line 637 of file PolyLineNodeT_impl.hh.
|
inline |
Trigger an update of the vbo.
Definition at line 129 of file PolyLineNodeT.hh.
|
private |
Trigger an update of the vbo.
If the polyLine is changed, you have to call this function to update the buffers.
Definition at line 756 of file PolyLineNodeT_impl.hh.
|
private |
Write vertex data for rendering to a buffer.
_vertex | index of polyline vertex |
_dst | address of vertex in buffer |
Definition at line 842 of file PolyLineNodeT_impl.hh.
|
private |
Write color for rendering to a buffer.
_vertex | index of polyline vertex |
_colorSourceVertex | vertex or edge color? |
_dst | address of vertex in buffer |
Definition at line 808 of file PolyLineNodeT_impl.hh.
|
private |
Custom vertex data for shader based rendering.
Definition at line 224 of file PolyLineNodeT.hh.
|
private |
This defines a local point spheres draw mode for all polyLine nodes.
Definition at line 272 of file PolyLineNodeT.hh.
|
private |
This defines a local point spheres draw mode for all polyLine nodes with constant screen size.
Definition at line 275 of file PolyLineNodeT.hh.
|
private |
The associated poly line.
Definition at line 254 of file PolyLineNodeT.hh.
|
private |
Map from custom properties in PolyLine to id in customBuffers_.
Definition at line 227 of file PolyLineNodeT.hh.
|
private |
Index buffer for selected edges.
Definition at line 263 of file PolyLineNodeT.hh.
|
private |
Index buffer for selected vertices.
Definition at line 260 of file PolyLineNodeT.hh.
|
private |
Sphere for VertexSphere DrawMode.
Definition at line 269 of file PolyLineNodeT.hh.
|
private |
Flag to trigger update of vbo.
Definition at line 266 of file PolyLineNodeT.hh.
|
private |
VBO used to render the poly line.
Definition at line 257 of file PolyLineNodeT.hh.
|
private |
Vertex layout without vertex colors.
Definition at line 215 of file PolyLineNodeT.hh.
|
private |
Vertex layout with edge colors.
Definition at line 221 of file PolyLineNodeT.hh.
|
private |
Vertex layout with vertex colors.
Definition at line 218 of file PolyLineNodeT.hh.