Add OpenGLMesh class to engine (not yet integrated in main.cpp)

This commit is contained in:
2026-03-16 19:12:27 +08:00
parent bf98fa0b89
commit 801c563eb5
3 changed files with 130 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
#pragma once
#include "XCEngine/RHI/OpenGL/OpenGLBuffer.h"
#include "XCEngine/RHI/OpenGL/OpenGLVertexArray.h"
#include <vector>
#include <string>
namespace XCEngine {
namespace RHI {
struct MeshVertex {
float Position[3];
float Normal[3];
float TexCoords[2];
};
struct MeshTexture {
unsigned int id;
std::string type;
std::string path;
};
class OpenGLMesh {
public:
OpenGLMesh();
~OpenGLMesh();
bool Initialize(const void* vertices, size_t vertexCount, const void* indices, size_t indexCount);
void Shutdown();
void Draw(unsigned int shaderProgram, const std::vector<MeshTexture>& textures);
unsigned int GetVAO() const { return m_vertexArray.GetID(); }
unsigned int GetIndexCount() const { return m_vertexArray.GetIndexCount(); }
private:
OpenGLBuffer m_vertexBuffer;
OpenGLBuffer m_indexBuffer;
OpenGLVertexArray m_vertexArray;
std::vector<MeshTexture> m_textures;
};
} // namespace RHI
} // namespace XCEngine