2024-11-28 17:09:00 +00:00
|
|
|
#include "Renderer/MeshRender.h"
|
|
|
|
|
|
|
|
#include "RHI/OpenglDrv/GLHandleMapper.h"
|
2024-11-30 14:26:28 +00:00
|
|
|
#include "Renderer/ShaderSoruce.h"
|
2024-11-28 17:09:00 +00:00
|
|
|
|
|
|
|
MeshRender::MeshRender(Mesh* mesh)
|
|
|
|
: mesh_(mesh) {
|
|
|
|
RHI* rhi = RHI::Get();
|
|
|
|
rhiApi_ = rhi->GetRHIAPI();
|
|
|
|
}
|
|
|
|
|
|
|
|
MeshRender::~MeshRender() {
|
|
|
|
if (0 == vaoHandle_) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
auto task = rhiApi_->DeleteVAOCommand(vaoHandle_, vboHandle_, eboHandle_);
|
|
|
|
RHI::Get()->Push(task);
|
|
|
|
}
|
|
|
|
|
2024-11-30 14:26:28 +00:00
|
|
|
uint32 vsHandle = 0;
|
|
|
|
uint32 fsHandle = 0;
|
2024-11-28 17:09:00 +00:00
|
|
|
void MeshRender::Render() {
|
|
|
|
if (nullptr == mesh_) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (0 == vaoHandle_) {
|
|
|
|
vaoHandle_ = GLHandleMapper::GeneratorVAOHandle();
|
|
|
|
vboHandle_ = GLHandleMapper::GeneratorVBOHandle();
|
|
|
|
eboHandle_ = GLHandleMapper::GeneratorEBOHandle();
|
|
|
|
auto task = rhiApi_->CreateVAOCommand(mesh_, vaoHandle_, vboHandle_, eboHandle_);
|
|
|
|
RHI::Get()->Push(task);
|
2024-11-30 14:26:28 +00:00
|
|
|
vsHandle = GLHandleMapper::GeneratorShaderHandle();
|
|
|
|
//rhiApi_->CreateShaderCommand()
|
2024-11-28 17:09:00 +00:00
|
|
|
} else {
|
|
|
|
auto task = rhiApi_->DrawElementsCommand(vaoHandle_, eboHandle_, mesh_->GetIndexCount());
|
|
|
|
RHI::Get()->Push(task);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|