Add RHI vertex and index buffer views

This commit is contained in:
2026-03-25 23:07:22 +08:00
parent 268daf7bc9
commit aaf9cce418
14 changed files with 342 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
#include "fixtures/RHITestFixture.h"
#include "XCEngine/RHI/RHIBuffer.h"
#include "XCEngine/RHI/RHIResourceView.h"
#include "XCEngine/RHI/RHITexture.h"
@@ -121,6 +122,56 @@ TEST_P(RHITestFixture, Device_CreateUnorderedAccessView) {
delete texture;
}
TEST_P(RHITestFixture, Device_CreateVertexBufferView) {
BufferDesc bufferDesc = {};
bufferDesc.size = 256;
bufferDesc.stride = 32;
bufferDesc.bufferType = static_cast<uint32_t>(BufferType::Vertex);
RHIBuffer* buffer = GetDevice()->CreateBuffer(bufferDesc);
ASSERT_NE(buffer, nullptr);
ResourceViewDesc viewDesc = {};
viewDesc.dimension = ResourceViewDimension::Buffer;
viewDesc.structureByteStride = 32;
RHIResourceView* vbv = GetDevice()->CreateVertexBufferView(buffer, viewDesc);
ASSERT_NE(vbv, nullptr);
EXPECT_TRUE(vbv->IsValid());
EXPECT_EQ(vbv->GetViewType(), ResourceViewType::VertexBuffer);
EXPECT_EQ(vbv->GetDimension(), ResourceViewDimension::Buffer);
vbv->Shutdown();
delete vbv;
buffer->Shutdown();
delete buffer;
}
TEST_P(RHITestFixture, Device_CreateIndexBufferView) {
BufferDesc bufferDesc = {};
bufferDesc.size = 256;
bufferDesc.stride = sizeof(uint32_t);
bufferDesc.bufferType = static_cast<uint32_t>(BufferType::Index);
RHIBuffer* buffer = GetDevice()->CreateBuffer(bufferDesc);
ASSERT_NE(buffer, nullptr);
ResourceViewDesc viewDesc = {};
viewDesc.dimension = ResourceViewDimension::Buffer;
viewDesc.format = static_cast<uint32_t>(Format::R32_UInt);
RHIResourceView* ibv = GetDevice()->CreateIndexBufferView(buffer, viewDesc);
ASSERT_NE(ibv, nullptr);
EXPECT_TRUE(ibv->IsValid());
EXPECT_EQ(ibv->GetViewType(), ResourceViewType::IndexBuffer);
EXPECT_EQ(ibv->GetDimension(), ResourceViewDimension::Buffer);
ibv->Shutdown();
delete ibv;
buffer->Shutdown();
delete buffer;
}
TEST_P(RHITestFixture, Device_CreateRenderTargetView_Multiple) {
TextureDesc texDesc = {};
texDesc.width = 256;
@@ -244,4 +295,4 @@ TEST_P(RHITestFixture, Device_CreateDepthStencilView_MipLevels) {
texture->Shutdown();
delete texture;
}
}