Color.
This commit is contained in:
73
src/display/mesh/Mesh.cpp
Normal file
73
src/display/mesh/Mesh.cpp
Normal file
@@ -0,0 +1,73 @@
|
||||
// Copyright (c) 2025 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "Mesh.hpp"
|
||||
#include "assert/Assert.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
Mesh::Mesh(
|
||||
const int32_t vertexCount,
|
||||
const PrimitiveType primitiveType,
|
||||
const MeshVertex *vertices
|
||||
) :
|
||||
vertexCount(vertexCount),
|
||||
primitiveType(primitiveType),
|
||||
vertices(vertices)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Mesh::draw(
|
||||
int32_t vertexOffset,
|
||||
int32_t vertexCount
|
||||
) const {
|
||||
const int32_t offset = vertexOffset == -1 ? 0 : vertexOffset;
|
||||
const int32_t count = vertexCount == -1 ? this->vertexCount : vertexCount;
|
||||
|
||||
assertNotNull(this->vertices, "Mesh cannot be NULL");
|
||||
assertTrue(offset >= 0, "Vertex offset must be non-negative");
|
||||
assertTrue(count >= 0, "Vertex count must be non-negative");
|
||||
assertTrue(
|
||||
offset + count <= this->vertexCount,
|
||||
"Vertex offset + count must not exceed vertex count"
|
||||
);
|
||||
|
||||
#if DISPLAY_SDL2
|
||||
// PSP style pointer legacy OpenGL
|
||||
const GLsizei stride = sizeof(MeshVertex);
|
||||
|
||||
glColorPointer(
|
||||
MESH_VERTEX_COLOR_SIZE,
|
||||
GL_UNSIGNED_BYTE,
|
||||
stride,
|
||||
(const GLvoid*)&this->vertices[offset].color[0]
|
||||
);
|
||||
|
||||
glTexCoordPointer(
|
||||
MESH_VERTEX_UV_SIZE,
|
||||
GL_FLOAT,
|
||||
stride,
|
||||
(const GLvoid*)&this->vertices[offset].uv[0]
|
||||
);
|
||||
|
||||
glVertexPointer(
|
||||
MESH_VERTEX_POS_SIZE,
|
||||
GL_FLOAT,
|
||||
stride,
|
||||
(const GLvoid*)&this->vertices[offset].pos[0]
|
||||
);
|
||||
|
||||
glDrawArrays(
|
||||
this->primitiveType,
|
||||
0,
|
||||
count
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
Mesh::~Mesh() {
|
||||
|
||||
}
|
Reference in New Issue
Block a user