Home | nevrax.com |
|
vertex_buffer_hard.cppGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "std3d.h" 00027 00028 #include "3d/vertex_buffer_hard.h" 00029 00030 00031 namespace NL3D 00032 { 00033 00034 // *************************************************************************** 00035 00036 void IVertexBufferHard::initFormat (uint16 vertexFormat, const uint8 *typeArray, uint32 numVertices) 00037 { 00038 // _NbVerts. 00039 _NbVerts= numVertices; 00040 00041 // Compute format: flags / offsets, for each component. 00042 _VertexSize=0; 00043 _Flags=0; 00044 00045 // For each values 00046 for (uint value=0; value<CVertexBuffer::NumValue; value++) 00047 { 00048 // Flag for this value 00049 uint flag=1<<value; 00050 00051 // Value used ? 00052 if (vertexFormat & flag) 00053 { 00054 // Use it 00055 _Flags|=flag; 00056 00057 // Value offset 00058 _Offset[value]=_VertexSize; 00059 00060 // New vertex size 00061 _VertexSize+=CVertexBuffer::SizeType[typeArray[value]]; 00062 00063 // Setup the type 00064 _Type[value]=typeArray[value]; 00065 } 00066 } 00067 } 00068 00069 // *************************************************************************** 00070 00071 uint8 IVertexBufferHard::getNumWeight () const 00072 { 00073 // Num weight 00074 switch (_Type[CVertexBuffer::Weight]) 00075 { 00076 case CVertexBuffer::Float1: 00077 return 1; 00078 case CVertexBuffer::Float2: 00079 return 2; 00080 case CVertexBuffer::Float3: 00081 return 3; 00082 case CVertexBuffer::Float4: 00083 return 4; 00084 } 00085 00086 // No weight 00087 return 0; 00088 } 00089 00090 // *************************************************************************** 00091 00092 } // NL3D |