Cleanup in vertex structures

dev
Tomasz Kapuściński 2022-01-19 22:22:59 +01:00
parent c280924c0e
commit 367dab9c5a
3 changed files with 14 additions and 51 deletions

View File

@ -37,13 +37,6 @@
namespace Gfx namespace Gfx
{ {
enum VertexType
{
VERTEX_TYPE_NORMAL,
VERTEX_TYPE_TEX2,
VERTEX_TYPE_COL,
};
/** /**
* \struct Vertex * \struct Vertex
* \brief Vertex of a primitive * \brief Vertex of a primitive
@ -57,8 +50,6 @@ enum VertexType
*/ */
struct Vertex struct Vertex
{ {
static constexpr VertexType VERTEX_TYPE = VERTEX_TYPE_NORMAL;
glm::vec3 coord = { 0, 0, 0 }; glm::vec3 coord = { 0, 0, 0 };
glm::vec3 normal = { 0, 0, 0 }; glm::vec3 normal = { 0, 0, 0 };
glm::vec2 texCoord = { 0, 0 }; glm::vec2 texCoord = { 0, 0 };
@ -74,8 +65,6 @@ struct Vertex
*/ */
struct VertexCol struct VertexCol
{ {
static constexpr VertexType VERTEX_TYPE = VERTEX_TYPE_COL;
glm::vec3 coord = { 0, 0, 0 }; glm::vec3 coord = { 0, 0, 0 };
Color color = Color(); Color color = Color();
}; };
@ -102,32 +91,6 @@ struct Vertex3D
glm::vec2 uv = { 0.0f, 0.0f }; glm::vec2 uv = { 0.0f, 0.0f };
glm::vec2 uv2 = { 0.0f, 0.0f }; glm::vec2 uv2 = { 0.0f, 0.0f };
glm::vec3 normal = { 0.0f, 0.0f, 1.0f }; glm::vec3 normal = { 0.0f, 0.0f, 1.0f };
Vertex3D() = default;
Vertex3D(const glm::vec3& position,
glm::u8vec4 color = { 255, 255, 255, 255 },
glm::vec2 uv = { 0.0f, 0.0f },
glm::vec2 uv2 = { 0.0f, 0.0f },
glm::vec3 normal = { 0.0f, 0.0f, 1.0f })
: position(position)
, color(color)
, uv(uv)
, uv2(uv2)
, normal(normal) {}
Vertex3D(const Vertex& vertex)
: position(vertex.coord)
, uv(vertex.texCoord)
, normal(vertex.normal)
{
}
operator Vertex() const
{
return Vertex{ position, normal, uv };
}
}; };
} // namespace Gfx } // namespace Gfx

View File

@ -56,7 +56,7 @@ namespace ModelInput
std::vector<ModelTriangle> ReadOldModelV2(std::istream &stream, int totalTriangles); std::vector<ModelTriangle> ReadOldModelV2(std::istream &stream, int totalTriangles);
std::vector<ModelTriangle> ReadOldModelV3(std::istream &stream, int totalTriangles); std::vector<ModelTriangle> ReadOldModelV3(std::istream &stream, int totalTriangles);
Vertex ReadBinaryVertex(std::istream& stream); Vertex3D ReadBinaryVertex(std::istream& stream);
Vertex3D ReadBinaryVertexTex2(std::istream& stream); Vertex3D ReadBinaryVertexTex2(std::istream& stream);
Material ReadBinaryMaterial(std::istream& stream); Material ReadBinaryMaterial(std::istream& stream);
@ -638,20 +638,20 @@ void ModelInput::ConvertFromOldRenderState(ModelTriangle& triangle, int state)
triangle.doubleSided = (state & static_cast<int>(ModelRenderState::TwoFace)) != 0; triangle.doubleSided = (state & static_cast<int>(ModelRenderState::TwoFace)) != 0;
} }
Vertex ModelInput::ReadBinaryVertex(std::istream& stream) Vertex3D ModelInput::ReadBinaryVertex(std::istream& stream)
{ {
Vertex vertex; Vertex3D vertex;
vertex.coord.x = ReadBinaryFloat(stream); vertex.position.x = ReadBinaryFloat(stream);
vertex.coord.y = ReadBinaryFloat(stream); vertex.position.y = ReadBinaryFloat(stream);
vertex.coord.z = ReadBinaryFloat(stream); vertex.position.z = ReadBinaryFloat(stream);
vertex.normal.x = ReadBinaryFloat(stream); vertex.normal.x = ReadBinaryFloat(stream);
vertex.normal.y = ReadBinaryFloat(stream); vertex.normal.y = ReadBinaryFloat(stream);
vertex.normal.z = ReadBinaryFloat(stream); vertex.normal.z = ReadBinaryFloat(stream);
vertex.texCoord.x = ReadBinaryFloat(stream); vertex.uv.x = ReadBinaryFloat(stream);
vertex.texCoord.y = ReadBinaryFloat(stream); vertex.uv.y = ReadBinaryFloat(stream);
return vertex; return vertex;
} }

View File

@ -180,9 +180,9 @@ struct OldModelTriangleV1
{ {
char used = 0; char used = 0;
char selected = 0; char selected = 0;
Vertex p1; Vertex3D p1;
Vertex p2; Vertex3D p2;
Vertex p3; Vertex3D p3;
char texName[21] = {'\0'}; char texName[21] = {'\0'};
float min = 0; float min = 0;
float max = 0; float max = 0;
@ -198,9 +198,9 @@ struct OldModelTriangleV2
{ {
char used = 0; char used = 0;
char selected = 0; char selected = 0;
Vertex p1; Vertex3D p1;
Vertex p2; Vertex3D p2;
Vertex p3; Vertex3D p3;
char texName[21] = {'\0'}; char texName[21] = {'\0'};
float min = 0.0f; float min = 0.0f;
float max = 0.0f; float max = 0.0f;