Files
Seele/src/Engine/Graphics/Mesh.h
T

56 lines
1.2 KiB
C++
Raw Normal View History

2020-04-15 02:03:56 +02:00
#pragma once
#include "GraphicsResources.h"
namespace Seele
{
2020-06-08 01:44:47 +02:00
#define MAX_TEX_CHANNELS 4
enum class VertexAttribute
{
POSITION,
TEXCOORD,
NORMAL,
TANGENT,
BITANGENT
};
struct MeshDescription
{
Array<VertexAttribute> layout;
Gfx::PVertexDeclaration declaration;
uint32 getStride() const
{
return getNumFloats() * sizeof(float);
}
uint32 getNumFloats() const
{
uint32 vertexSize = 0;
for(auto a : layout)
{
switch (a)
{
case VertexAttribute::POSITION:
case VertexAttribute::NORMAL:
case VertexAttribute::TANGENT:
case VertexAttribute::BITANGENT:
vertexSize += 3;
break;
case VertexAttribute::TEXCOORD:
vertexSize += 2;
break;
}
}
return vertexSize;
}
};
DECLARE_REF(MaterialAsset);
2020-04-15 02:03:56 +02:00
class Mesh
{
public:
2020-06-08 01:44:47 +02:00
Mesh(MeshDescription description, Gfx::PIndexBuffer indexBuffer);
2020-04-15 02:03:56 +02:00
~Mesh();
2020-05-05 01:51:13 +02:00
2020-06-02 11:46:18 +02:00
Gfx::PIndexBuffer indexBuffer;
2020-06-08 01:44:47 +02:00
MeshDescription description;
PMaterialAsset referencedMaterial;
2020-04-15 02:03:56 +02:00
};
2020-06-02 11:46:18 +02:00
DEFINE_REF(Mesh);
2020-05-05 01:51:13 +02:00
} // namespace Seele