Add OpenGLMesh class to engine (not yet integrated in main.cpp)
This commit is contained in:
44
engine/include/XCEngine/RHI/OpenGL/OpenGLMesh.h
Normal file
44
engine/include/XCEngine/RHI/OpenGL/OpenGLMesh.h
Normal 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
|
||||
Reference in New Issue
Block a user