Texture3DNode.hh

00001 /*===========================================================================*\
00002  *                                                                           *
00003  *                              OpenFlipper                                  *
00004  *      Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen      *
00005  *                           www.openflipper.org                             *
00006  *                                                                           *
00007  *---------------------------------------------------------------------------*
00008  *  This file is part of OpenFlipper.                                        *
00009  *                                                                           *
00010  *  OpenFlipper is free software: you can redistribute it and/or modify      *
00011  *  it under the terms of the GNU Lesser General Public License as           *
00012  *  published by the Free Software Foundation, either version 3 of           *
00013  *  the License, or (at your option) any later version with the              *
00014  *  following exceptions:                                                    *
00015  *                                                                           *
00016  *  If other files instantiate templates or use macros                       *
00017  *  or inline functions from this file, or you compile this file and         *
00018  *  link it with other files to produce an executable, this file does        *
00019  *  not by itself cause the resulting executable to be covered by the        *
00020  *  GNU Lesser General Public License. This exception does not however       *
00021  *  invalidate any other reasons why the executable file might be            *
00022  *  covered by the GNU Lesser General Public License.                        *
00023  *                                                                           *
00024  *  OpenFlipper is distributed in the hope that it will be useful,           *
00025  *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
00026  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
00027  *  GNU Lesser General Public License for more details.                      *
00028  *                                                                           *
00029  *  You should have received a copy of the GNU LesserGeneral Public          *
00030  *  License along with OpenFlipper. If not,                                  *
00031  *  see <http://www.gnu.org/licenses/>.                                      *
00032  *                                                                           *
00033 \*===========================================================================*/
00034 
00035 /*===========================================================================*\
00036  *                                                                           *
00037  *   $Revision: 6743 $                                                       *
00038  *   $Author: moebius $                                                      *
00039  *   $Date: 2009-08-05 11:03:10 +0200 (Mi, 05. Aug 2009) $                   *
00040  *                                                                           *
00041 \*===========================================================================*/
00042 
00043 
00044 
00045 
00046 //=============================================================================
00047 //
00048 //  CLASS Texture3DNode
00049 //
00050 //=============================================================================
00051 
00052 #ifndef ACG_TEXTURE3DNODE_HH
00053 #define ACG_TEXTURE3DNODE_HH
00054 
00055 //=============================================================================
00056 
00057 #include "BaseNode.hh"
00058 
00059 #include <string>
00060 #include <qimage.h>
00061 
00062 
00063 //=============================================================================
00064 
00065 namespace ACG {
00066 namespace SceneGraph {
00067 
00068 //=============================================================================
00069 
00070 
00071 class ACGDLLEXPORT Texture3DNode : public BaseNode
00072 {
00073 public:
00074 
00075   Texture3DNode( BaseNode*           _parent = 0,
00076                  const std::string&  _name = "<Texture3DNode>" );
00077   virtual ~Texture3DNode();
00078 
00080   ACG_CLASSNAME( Texture3DNode );
00081 
00082   void set_texture( unsigned int    _width,
00083                     unsigned int    _height,
00084                     unsigned int    _depth,
00085                     unsigned char * _data );
00086 
00088   void enter( GLState& _state, unsigned int _drawmode );
00089 
00091   void leave( GLState& _state, unsigned int _drawmode );
00092 
00093 
00094   void set_texture_mode( GLenum _mode )
00095   { tex_mode_ = _mode; }
00096 
00097 
00098   void set_border_color( const Vec4f & _border_color )
00099   {
00100     border_color_ = _border_color;
00101   }
00102 
00103   void set_wrap_mode( GLenum _wrap_mode )
00104   {
00105     // possible modes are:
00106     // GL_CLAMP
00107     // GL_CLAMP_TO_EDGE
00108     // GL_CLAMP_TO_BORDER
00109     // GL_REPEAT
00110 
00111     wrap_mode_ = _wrap_mode;
00112   }
00113 
00114   void set_filter( GLenum _filter )
00115   {
00116     // possible modes are:
00117     // GL_NEAREST
00118     // GL_LINEAR
00119 
00120     filter_ = _filter;
00121   }
00122 
00123 
00124 private:
00125 
00126   GLuint  texture_;
00127   GLenum  tex_mode_;
00128   Vec4f   border_color_;
00129   GLenum  wrap_mode_;
00130   GLenum  filter_;
00131 
00132 
00133 };
00134 
00135 
00136 //=============================================================================
00137 } // namespace SceneGraph
00138 } // namespace ACG
00139 //=============================================================================
00140 #endif // ACG_TEXTURE3DNODE_HH defined
00141 //=============================================================================
00142 

acg pic Project OpenFlipper, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .