|
|
@@ -14,6 +14,106 @@ namespace anki {
|
|
|
class MeshData;
|
|
|
|
|
|
|
|
|
+/// XXX
|
|
|
+class MeshBase
|
|
|
+{
|
|
|
+ public:
|
|
|
+ MeshBase()
|
|
|
+ {
|
|
|
+ pVbo = nVbo = tVbo = vwVbo = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ virtual ~MeshBase()
|
|
|
+ {}
|
|
|
+
|
|
|
+ /// @name Accessors
|
|
|
+ /// @{
|
|
|
+ const Vbo& getPositionsVbo() const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(pVbo != NULL);
|
|
|
+ return *pVbo;
|
|
|
+ }
|
|
|
+
|
|
|
+ const Vbo& getNormalsVbo() const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(nVbo != NULL);
|
|
|
+ return *nVbo;
|
|
|
+ }
|
|
|
+
|
|
|
+ const Vbo& getTangentsVbo() const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(tVbo != NULL);
|
|
|
+ return *tVbo;
|
|
|
+ }
|
|
|
+
|
|
|
+ const Vbo& getTextureCoordsVbo(uint channel) const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(texVbo[channel] != NULL);
|
|
|
+ return *texVbo[channel];
|
|
|
+ }
|
|
|
+
|
|
|
+ const Vbo& getIndecesVbo(uint lod) const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(iVbo[lod] != NULL);
|
|
|
+ return *iVbo[lod];
|
|
|
+ }
|
|
|
+
|
|
|
+ const Vbo& getWeightsVbo() const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(wVbo != NULL);
|
|
|
+ return *wVbo;
|
|
|
+ }
|
|
|
+
|
|
|
+ uint getTextureChannelsNumber() const
|
|
|
+ {
|
|
|
+ return texVbo.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ uint getLodsNumber() const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(iVbo.size() > 0);
|
|
|
+ return iVbo.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ uint getIndicesNumber(uint lod) const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(idsNum[lod] != 0);
|
|
|
+ return idsNum[lod];
|
|
|
+ }
|
|
|
+
|
|
|
+ uint getVertexNumber(uint lod) const
|
|
|
+ {
|
|
|
+ ANKI_ASSERT(vertsNum[lod] != 0);
|
|
|
+ return vertsNum[lod];
|
|
|
+ }
|
|
|
+ /// @}
|
|
|
+
|
|
|
+ /// @name Ask for geometry properties
|
|
|
+ /// @{
|
|
|
+ bool hasTexCoords() const
|
|
|
+ {
|
|
|
+ return texVbo != NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ bool hasWeights() const
|
|
|
+ {
|
|
|
+ return vwVbo != NULL;
|
|
|
+ }
|
|
|
+ /// @}
|
|
|
+
|
|
|
+ protected:
|
|
|
+ Vbo* pVbo; ///< Mandatory
|
|
|
+ Vbo* nVbo; ///< Mandatory
|
|
|
+ Vbo* tVbo; ///< Mandatory
|
|
|
+ std::vector<Vbo*> texVbo; ///< Optional. Tex coords per channel
|
|
|
+ std::vector<Vbo*> iVbo; ///< Mandatory. Indices VBO per LOD
|
|
|
+ Vbo* vwVbo; ///< Optional
|
|
|
+
|
|
|
+ std::vector<uint> idsNum; ///< Indices count per LOD
|
|
|
+ std::vector<uint> vertsNum; ///< Vertex count per LOD
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
/// Mesh Resource. It contains the geometry packed in VBOs
|
|
|
class Mesh
|
|
|
{
|