Developer Documentation
|
#include <ACG/Scenegraph/TextureNode.hh>
Classes | |
class | TextureInfo |
Public Member Functions | |
TextureNode (BaseNode *_parent=0, const std::string &_name="<TextureNode>", bool _texture_repeat=true, GLint _texture_filter=GL_LINEAR) | |
Default constructor. Applies all properties. | |
virtual | ~TextureNode () |
Destructor. | |
ACG_CLASSNAME (TextureNode) | |
set class name | |
bool | alpha () |
get transparency status | |
void | set_alpha (bool _status) |
set transparency status | |
bool | repeat () |
get texture repeat status | |
void | set_repeat (bool _status) |
set texture repeat status | |
GLint | filter () |
get texture filter | |
void | set_filter (GLint _filter) |
set texture filter | |
void | set_texture_mode (GLenum _mode) |
void | enable_mipmapping () |
Enable mipmapping. | |
void | disable_mipmapping () |
Disable mipmapping. | |
bool | mipmapping () const |
Get mipmapping status. | |
Change active texture | |
bool | activateTexture (GLuint _id) |
Set active Texture. More... | |
GLuint | activeTexture () |
Get active Texture. More... | |
bool | read (const char *_filename) |
Uses a QImage to load the texture from the given file. More... | |
void | set_texture (const QImage &_image) |
Uses a QImage to set the texture. More... | |
void | set_texture (const float *_image, int _width, int _height) |
Uses a float buffer to set the texture. More... | |
void | set_texture (const unsigned char *_image, int _width, int _height) |
Uses a byte buffer to set the texture. More... | |
Change specific texture | |
bool | read (const char *_filename, GLuint _id) |
Uses a QImage to load the texture from the given file. More... | |
void | set_texture (const QImage &_image, GLuint _id) |
Uses a QImage to set the texture. More... | |
void | set_texture (const float *_image, int _width, int _height, GLuint _id) |
Uses a float buffer to set the texture. More... | |
void | set_texture (const unsigned char *_image, int _width, int _height, GLuint _id) |
Uses a byte buffer to set the texture. More... | |
SceneGraph traversal functions | |
void | enter (GLState &_state, const DrawModes::DrawMode &_drawmode) |
set default texture and states for the nodes children | |
void | leave (GLState &_state, const DrawModes::DrawMode &_drawmode) |
Unbind Texture. | |
void | enterPick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) |
Do nothing in picking. | |
void | leavePick (GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode) |
Do nothing in picking. | |
Public Member Functions inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode | |
BaseNode (BaseNode *_parent=0, std::string _name="<unknown>") | |
Default constructor. | |
BaseNode (BaseNode *_parent, BaseNode *_child, std::string _name="<unknown>") | |
Put this node between _parent and _child. | |
virtual | ~BaseNode () |
Destructor. | |
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 | 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 | 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) | |
void | setDirty (bool _dirty=true) |
mark node for redrawn | |
bool | isDirty () const |
Check if node should be redrawn. | |
ChildIter | childrenBegin () |
Returns: begin-iterator of children. | |
ConstChildIter | childrenBegin () const |
Same but cont . | |
ChildIter | childrenEnd () |
Returns: end-iterator of children. | |
ConstChildIter | childrenEnd () const |
Same but const . | |
ChildRIter | childrenRBegin () |
Returns: reverse begin-iterator of children. | |
ConstChildRIter | childrenRBegin () const |
Same but const. | |
ChildRIter | childrenREnd () |
Returns: reverse end-iterator of children. | |
ConstChildRIter | childrenREnd () const |
Same but const . | |
void | push_back (BaseNode *_node) |
Insert _node at the end of the list of children. | |
void | remove (ChildIter _pos) |
size_t | nChildren () const |
number of children | |
ChildIter | find (BaseNode *_node) |
BaseNode * | find (const std::string &_name) |
BaseNode * | parent () |
Get the nodes parent node. | |
const BaseNode * | parent () const |
Get the nodes parent node. | |
void | set_parent (BaseNode *_parent) |
Set the parent of this node. More... | |
StatusMode | status () const |
Get node's status. | |
void | set_status (StatusMode _s) |
Set the status of this node. | |
void | hide () |
Hide Node: set status to HideNode. | |
void | show () |
Show node: set status to Active. | |
bool | visible () |
Is node visible (status == Active)? | |
bool | hidden () |
Is node not visible (status != Active)? | |
std::string | name () const |
Returns: name of node (needs not be unique) | |
void | name (const std::string &_name) |
rename a node | |
unsigned int | id () const |
DrawModes::DrawMode | drawMode () const |
Return the own draw modes of this node. | |
void | drawMode (DrawModes::DrawMode _drawMode) |
unsigned int | traverseMode () const |
Return how the node should be traversed. | |
void | setTraverseMode (unsigned int _mode) |
Set traverse mode for node. | |
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 | setTextureDataGL (GLuint _textureId, GLenum _target, GLint _width, GLint _height, GLenum _format, GLenum _type, const void *_data) |
void | checkEmpty () |
Check if a texture is already generated by this Node. More... | |
int | available (GLuint _id) |
check this node for a texture More... | |
void | updateMipmaps (bool _mipmap) |
Build mip maps of textures that don't have one yet. More... | |
Private Attributes | |
std::vector< TextureInfo > | textures_ |
bool | alpha_ |
bool | texture_repeat_ |
GLenum | tex_mode_ |
GLint | texture_filter_ |
bool | mipmapping_globally_active_ |
bool | last_mipmapping_status_ |
bool | mipmapping_ |
int | activeTexture_ |
currently active texture More... | |
DrawModes::DrawMode | open_volume_mesh_texture_draw_modes_ |
OpenVolumeMesh DrawModes using textures. More... | |
Setting textures | |
GLuint | add_texture (const QImage &_image) |
Add a texture to this node. More... | |
void | applyTextureParameters (int _id) |
void | applyGLSettings () |
Additional Inherited Members | |
Public Types inherited from ACG::SceneGraph::ACG::SceneGraph::BaseNode | |
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::list< BaseNode * > ::const_iterator | ConstChildIter |
allows to iterate over children | |
typedef std::list< BaseNode * > ::iterator | ChildIter |
allows to iterate over children | |
typedef std::list< BaseNode * > ::const_reverse_iterator | ConstChildRIter |
allows to reverse iterate over children | |
typedef std::list< BaseNode * > ::reverse_iterator | ChildRIter |
allows to reverse iterate over children | |
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. | |
typedef unsigned int | MultipassBitMask |
Multipass pass bit mask type. | |
Set Texture for this node and all its children. All changes will be done in the enter() method undone in the leave() method. Enable Environment Mapping if you need it. To use Blending or AlphaTest use a MaterialNode.
Definition at line 93 of file TextureNode.hh.
bool ACG::SceneGraph::TextureNode::activateTexture | ( | GLuint | _id | ) |
Set active Texture.
Sets the active texture of this node to the given id
Definition at line 566 of file TextureNode.cc.
GLuint ACG::SceneGraph::TextureNode::activeTexture | ( | ) |
Get active Texture.
Gets the currently active texture of this node
Definition at line 556 of file TextureNode.cc.
GLuint ACG::SceneGraph::TextureNode::add_texture | ( | const QImage & | _image | ) |
Add a texture to this node.
Definition at line 469 of file TextureNode.cc.
|
private |
Set basic gl settings
Definition at line 134 of file TextureNode.cc.
|
private |
Apply the internal texture properties to the currently active texture
Definition at line 148 of file TextureNode.cc.
|
private |
check this node for a texture
Returns the id of the texture if this node handles the texture.
If not -1.
Definition at line 390 of file TextureNode.cc.
|
private |
Check if a texture is already generated by this Node.
This function will create a texture if no texture exists and set the activeTexture_ to the new one.
Definition at line 374 of file TextureNode.cc.
bool ACG::SceneGraph::TextureNode::read | ( | const char * | _filename | ) |
Uses a QImage to load the texture from the given file.
This function will change the active texture.
Definition at line 114 of file TextureNode.cc.
bool ACG::SceneGraph::TextureNode::read | ( | const char * | _filename, |
GLuint | _id | ||
) |
Uses a QImage to load the texture from the given file.
This function will change the given texture if available.
Definition at line 401 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const QImage & | _image | ) |
Uses a QImage to set the texture.
This function will change the active texture.
Definition at line 309 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const float * | _image, |
int | _width, | ||
int | _height | ||
) |
Uses a float buffer to set the texture.
This function will change the active texture.
Assumptions: Buffer is in RGBA format, and either power of two size or using a graphics card that supports arbitrary textures.
Definition at line 358 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const unsigned char * | _image, |
int | _width, | ||
int | _height | ||
) |
Uses a byte buffer to set the texture.
This function will change the active texture.
Assumptions: Buffer is in RGBA format, and either power of two size or using a graphics card that supports arbitrary textures.
Definition at line 290 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const QImage & | _image, |
GLuint | _id | ||
) |
Uses a QImage to set the texture.
This function will change the given texture if available.
Definition at line 417 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const float * | _image, |
int | _width, | ||
int | _height, | ||
GLuint | _id | ||
) |
Uses a float buffer to set the texture.
This function will change the given texture if available.
Assumptions: Buffer is in RGBA format, and either power of two size or using a graphics card that supports arbitrary textures.
Definition at line 434 of file TextureNode.cc.
void ACG::SceneGraph::TextureNode::set_texture | ( | const unsigned char * | _image, |
int | _width, | ||
int | _height, | ||
GLuint | _id | ||
) |
Uses a byte buffer to set the texture.
This function will change the given texture if available.
Assumptions: Buffer is in RGBA format, and either power of two size or using a graphics card that supports arbitrary textures.
Definition at line 450 of file TextureNode.cc.
|
private |
Build mip maps of textures that don't have one yet.
Generate mipmaps for each texture that does not have one yet.
Definition at line 248 of file TextureNode.cc.
|
private |
currently active texture
This index is an index to the textures_ vector! Not the GLuint!!
Definition at line 352 of file TextureNode.hh.
|
private |
OpenVolumeMesh DrawModes using textures.
Texturing will be activated for all DrawModes which are combined in this DrawMode
Definition at line 358 of file TextureNode.hh.