Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ACG::SceneGraph::TextureNode Class Reference

#include <ACG/Scenegraph/TextureNode.hh>

Inheritance diagram for ACG::SceneGraph::TextureNode:
ACG::SceneGraph::ACG::SceneGraph::BaseNode ACG::SceneGraph::EnvMapNode

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)
 
BaseNodefind (const std::string &_name)
 
BaseNodeparent ()
 Get the nodes parent node.
 
const BaseNodeparent () 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::UniformPoolgetRenderObjectUniformPool ()
 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...
 
RenderObjectModifiergetRenderObjectModifier ()
 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< TextureInfotextures_
 
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.
 

Detailed Description

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.

Member Function Documentation

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.

void ACG::SceneGraph::TextureNode::applyGLSettings ( )
private

Set basic gl settings

Definition at line 134 of file TextureNode.cc.

void ACG::SceneGraph::TextureNode::applyTextureParameters ( int  _id)
private

Apply the internal texture properties to the currently active texture

Definition at line 148 of file TextureNode.cc.

int ACG::SceneGraph::TextureNode::available ( GLuint  _id)
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.

void ACG::SceneGraph::TextureNode::checkEmpty ( )
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.

void ACG::SceneGraph::TextureNode::updateMipmaps ( bool  _mipmap)
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.

Member Data Documentation

int ACG::SceneGraph::TextureNode::activeTexture_
private

currently active texture

This index is an index to the textures_ vector! Not the GLuint!!

Definition at line 352 of file TextureNode.hh.

DrawModes::DrawMode ACG::SceneGraph::TextureNode::open_volume_mesh_texture_draw_modes_
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.


The documentation for this class was generated from the following files: