Remove OpenGLMesh (not needed, D3D12 has no Mesh)
This commit is contained in:
@@ -138,7 +138,6 @@ add_library(XCEngine STATIC
|
|||||||
include/XCEngine/RHI/OpenGL/OpenGLSampler.h
|
include/XCEngine/RHI/OpenGL/OpenGLSampler.h
|
||||||
include/XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h
|
include/XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h
|
||||||
include/XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h
|
include/XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h
|
||||||
include/XCEngine/RHI/OpenGL/OpenGLMesh.h
|
|
||||||
src/RHI/OpenGL/OpenGLDevice.cpp
|
src/RHI/OpenGL/OpenGLDevice.cpp
|
||||||
src/RHI/OpenGL/OpenGLShader.cpp
|
src/RHI/OpenGL/OpenGLShader.cpp
|
||||||
src/RHI/OpenGL/OpenGLBuffer.cpp
|
src/RHI/OpenGL/OpenGLBuffer.cpp
|
||||||
@@ -151,7 +150,6 @@ add_library(XCEngine STATIC
|
|||||||
src/RHI/OpenGL/OpenGLSampler.cpp
|
src/RHI/OpenGL/OpenGLSampler.cpp
|
||||||
src/RHI/OpenGL/OpenGLRenderTargetView.cpp
|
src/RHI/OpenGL/OpenGLRenderTargetView.cpp
|
||||||
src/RHI/OpenGL/OpenGLDepthStencilView.cpp
|
src/RHI/OpenGL/OpenGLDepthStencilView.cpp
|
||||||
src/RHI/OpenGL/OpenGLMesh.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(XCEngine PUBLIC
|
target_include_directories(XCEngine PUBLIC
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
#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
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
#define GLFW_INCLUDE_NONE
|
|
||||||
#include "XCEngine/RHI/OpenGL/OpenGLMesh.h"
|
|
||||||
#include <glad/glad.h>
|
|
||||||
#include <GLFW/glfw3.h>
|
|
||||||
|
|
||||||
namespace XCEngine {
|
|
||||||
namespace RHI {
|
|
||||||
|
|
||||||
OpenGLMesh::OpenGLMesh() {
|
|
||||||
}
|
|
||||||
|
|
||||||
OpenGLMesh::~OpenGLMesh() {
|
|
||||||
Shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OpenGLMesh::Initialize(const void* vertices, size_t vertexCount, const void* indices, size_t indexCount) {
|
|
||||||
m_vertexBuffer.InitializeVertexBuffer(vertices, vertexCount * sizeof(MeshVertex));
|
|
||||||
m_indexBuffer.InitializeIndexBuffer(indices, indexCount * sizeof(unsigned int));
|
|
||||||
|
|
||||||
m_vertexArray.Initialize();
|
|
||||||
|
|
||||||
VertexAttribute attr0;
|
|
||||||
attr0.index = 0;
|
|
||||||
attr0.count = 3;
|
|
||||||
attr0.type = GL_FLOAT;
|
|
||||||
attr0.normalized = GL_FALSE;
|
|
||||||
attr0.stride = sizeof(MeshVertex);
|
|
||||||
attr0.offset = 0;
|
|
||||||
m_vertexArray.AddVertexBuffer(m_vertexBuffer.GetID(), attr0);
|
|
||||||
|
|
||||||
VertexAttribute attr1;
|
|
||||||
attr1.index = 1;
|
|
||||||
attr1.count = 3;
|
|
||||||
attr1.type = GL_FLOAT;
|
|
||||||
attr1.normalized = GL_FALSE;
|
|
||||||
attr1.stride = sizeof(MeshVertex);
|
|
||||||
attr1.offset = sizeof(float) * 3;
|
|
||||||
m_vertexArray.AddVertexBuffer(m_vertexBuffer.GetID(), attr1);
|
|
||||||
|
|
||||||
VertexAttribute attr2;
|
|
||||||
attr2.index = 2;
|
|
||||||
attr2.count = 2;
|
|
||||||
attr2.type = GL_FLOAT;
|
|
||||||
attr2.normalized = GL_FALSE;
|
|
||||||
attr2.stride = sizeof(MeshVertex);
|
|
||||||
attr2.offset = sizeof(float) * 6;
|
|
||||||
m_vertexArray.AddVertexBuffer(m_vertexBuffer.GetID(), attr2);
|
|
||||||
|
|
||||||
m_vertexArray.SetIndexBuffer(m_indexBuffer.GetID(), GL_UNSIGNED_INT);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLMesh::Shutdown() {
|
|
||||||
m_vertexArray.Shutdown();
|
|
||||||
m_vertexBuffer.Shutdown();
|
|
||||||
m_indexBuffer.Shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLMesh::Draw(unsigned int shaderProgram, const std::vector<MeshTexture>& textures) {
|
|
||||||
unsigned int diffuseNr = 1;
|
|
||||||
unsigned int specularNr = 1;
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < textures.size(); i++)
|
|
||||||
{
|
|
||||||
glActiveTexture(GL_TEXTURE0 + i);
|
|
||||||
std::string number;
|
|
||||||
std::string name = textures[i].type;
|
|
||||||
if (name == "texture_diffuse")
|
|
||||||
number = std::to_string(diffuseNr++);
|
|
||||||
else if (name == "texture_specular")
|
|
||||||
number = std::to_string(specularNr++);
|
|
||||||
|
|
||||||
glUniform1i(glGetUniformLocation(shaderProgram, ("material." + name + number).c_str()), i);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, textures[i].id);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_vertexArray.Bind();
|
|
||||||
glDrawElements(GL_TRIANGLES, m_vertexArray.GetIndexCount(), GL_UNSIGNED_INT, 0);
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace RHI
|
|
||||||
} // namespace XCEngine
|
|
||||||
Reference in New Issue
Block a user