00001 /****************************************************************************** 00002 * This file is part of the Gluon Development Platform 00003 * Copyright (C) 2008 Sacha Schutz <istdasklar@free.fr> 00004 * Copyright (C) 2008 Olivier Gueudelot <gueudelotolive@gmail.com> 00005 * Copyright (C) 2008 Charles Huet <packadal@gmail.com> 00006 * Copyright (c) 2010 Arjen Hiemstra <ahiemstra@heimr.nl> 00007 * 00008 * This library is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public 00010 * License as published by the Free Software Foundation; either 00011 * version 2.1 of the License, or (at your option) any later version. 00012 * 00013 * This library is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 * Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License along with this library; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 */ 00022 00023 #ifndef GLUONGRAPHICS_MESH_H 00024 #define GLUONGRAPHICS_MESH_H 00025 00026 #include "gluon_graphics_export.h" 00027 00028 #include <QtCore/QObject> 00029 00030 class QMatrix4x4; 00031 00032 namespace GluonGraphics 00033 { 00034 class MaterialInstance; 00041 class GLUON_GRAPHICS_EXPORT Mesh : public QObject 00042 { 00043 Q_OBJECT 00044 public: 00045 Mesh( QObject* parent = 0 ); 00046 virtual ~Mesh(); 00047 00053 virtual void load( const QString& filename ); 00054 00058 virtual bool isLoaded(); 00059 00067 virtual void render( MaterialInstance* material ); 00068 00069 protected: 00078 virtual void createBuffer( const QVector< float >& vertices, const QVector< float >& colors, const QVector< float >& uvs ); 00079 00087 virtual void renderBuffer( uint mode, int count, GluonGraphics::MaterialInstance* material ); 00088 00089 private: 00090 class MeshPrivate; 00091 MeshPrivate* const d; 00092 00093 }; 00094 }//namespace 00095 00096 #endif // GLUONGRAPHICS_MESH_H