Add renderer backpack scene integration test
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include <XCEngine/Resources/Material/Material.h>
|
||||
#include <XCEngine/Resources/Mesh/Mesh.h>
|
||||
#include <XCEngine/Resources/Texture/Texture.h>
|
||||
#include <XCEngine/RHI/RHITexture.h>
|
||||
#include <XCEngine/Scene/Scene.h>
|
||||
|
||||
#include "../../../RHI/integration/fixtures/RHIIntegrationFixture.h"
|
||||
@@ -35,6 +36,8 @@ namespace {
|
||||
|
||||
constexpr const char* kD3D12Screenshot = "textured_quad_scene_d3d12.ppm";
|
||||
constexpr const char* kOpenGLScreenshot = "textured_quad_scene_opengl.ppm";
|
||||
constexpr uint32_t kFrameWidth = 1280;
|
||||
constexpr uint32_t kFrameHeight = 720;
|
||||
|
||||
Mesh* CreateQuadMesh() {
|
||||
auto* mesh = new Mesh();
|
||||
@@ -131,6 +134,8 @@ private:
|
||||
std::unique_ptr<Scene> mScene;
|
||||
std::unique_ptr<SceneRenderer> mSceneRenderer;
|
||||
std::vector<RHIResourceView*> mBackBufferViews;
|
||||
RHITexture* mDepthTexture = nullptr;
|
||||
RHIResourceView* mDepthView = nullptr;
|
||||
Mesh* mMesh = nullptr;
|
||||
Material* mMaterial = nullptr;
|
||||
Texture* mTexture = nullptr;
|
||||
@@ -158,12 +163,45 @@ void TexturedQuadSceneTest::SetUp() {
|
||||
meshFilter->SetMesh(ResourceHandle<Mesh>(mMesh));
|
||||
meshRenderer->SetMaterial(0, ResourceHandle<Material>(mMaterial));
|
||||
|
||||
TextureDesc depthDesc = {};
|
||||
depthDesc.width = kFrameWidth;
|
||||
depthDesc.height = kFrameHeight;
|
||||
depthDesc.depth = 1;
|
||||
depthDesc.mipLevels = 1;
|
||||
depthDesc.arraySize = 1;
|
||||
depthDesc.format = static_cast<uint32_t>(Format::D24_UNorm_S8_UInt);
|
||||
depthDesc.textureType = static_cast<uint32_t>(XCEngine::RHI::TextureType::Texture2D);
|
||||
depthDesc.sampleCount = 1;
|
||||
depthDesc.sampleQuality = 0;
|
||||
depthDesc.flags = 0;
|
||||
mDepthTexture = GetDevice()->CreateTexture(depthDesc);
|
||||
ASSERT_NE(mDepthTexture, nullptr);
|
||||
|
||||
ResourceViewDesc depthViewDesc = {};
|
||||
depthViewDesc.format = static_cast<uint32_t>(Format::D24_UNorm_S8_UInt);
|
||||
depthViewDesc.dimension = ResourceViewDimension::Texture2D;
|
||||
depthViewDesc.mipLevel = 0;
|
||||
mDepthView = GetDevice()->CreateDepthStencilView(mDepthTexture, depthViewDesc);
|
||||
ASSERT_NE(mDepthView, nullptr);
|
||||
|
||||
mBackBufferViews.resize(2, nullptr);
|
||||
}
|
||||
|
||||
void TexturedQuadSceneTest::TearDown() {
|
||||
mSceneRenderer.reset();
|
||||
|
||||
if (mDepthView != nullptr) {
|
||||
mDepthView->Shutdown();
|
||||
delete mDepthView;
|
||||
mDepthView = nullptr;
|
||||
}
|
||||
|
||||
if (mDepthTexture != nullptr) {
|
||||
mDepthTexture->Shutdown();
|
||||
delete mDepthTexture;
|
||||
mDepthTexture = nullptr;
|
||||
}
|
||||
|
||||
for (RHIResourceView*& backBufferView : mBackBufferViews) {
|
||||
if (backBufferView != nullptr) {
|
||||
backBufferView->Shutdown();
|
||||
@@ -215,8 +253,9 @@ void TexturedQuadSceneTest::RenderFrame() {
|
||||
|
||||
commandList->Reset();
|
||||
|
||||
RenderSurface surface(1280, 720);
|
||||
RenderSurface surface(kFrameWidth, kFrameHeight);
|
||||
surface.SetColorAttachment(GetCurrentBackBufferView());
|
||||
surface.SetDepthAttachment(mDepthView);
|
||||
|
||||
RenderContext renderContext = {};
|
||||
renderContext.device = GetDevice();
|
||||
|
||||
Reference in New Issue
Block a user