human_render/src/Renderer/MeshRender.cpp
2024-11-30 22:26:28 +08:00

41 lines
1.1 KiB
C++

#include "Renderer/MeshRender.h"
#include "RHI/OpenglDrv/GLHandleMapper.h"
#include "Renderer/ShaderSoruce.h"
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);
}
uint32 vsHandle = 0;
uint32 fsHandle = 0;
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);
vsHandle = GLHandleMapper::GeneratorShaderHandle();
//rhiApi_->CreateShaderCommand()
} else {
auto task = rhiApi_->DrawElementsCommand(vaoHandle_, eboHandle_, mesh_->GetIndexCount());
RHI::Get()->Push(task);
}
}