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