Fix OpenGL device initialization and file shaders

This commit is contained in:
2026-03-26 02:07:21 +08:00
parent 10ee1fa3fa
commit c47e871c5a
5 changed files with 310 additions and 42 deletions

View File

@@ -140,4 +140,40 @@ TEST_P(RHITestFixture, Shader_Shutdown_Invalidates) {
EXPECT_FALSE(shader->IsValid());
delete shader;
}
}
}
TEST_P(RHITestFixture, Shader_Compile_FromFile_ReturnsValidShader) {
ShaderCompileDesc desc = {};
if (GetBackendType() == RHIType::D3D12) {
desc.fileName = L"tests/RHI/D3D12/integration/quad/Res/Shader/quad.hlsl";
desc.entryPoint = L"MainVS";
desc.profile = L"vs_5_0";
} else {
desc.fileName = L"tests/RHI/OpenGL/integration/triangle/Res/Shader/triangle.vert";
desc.entryPoint = L"main";
desc.profile = L"vs_4_30";
}
RHIShader* shader = GetDevice()->CreateShader(desc);
ASSERT_NE(shader, nullptr);
EXPECT_TRUE(shader->IsValid());
EXPECT_EQ(shader->GetType(), ShaderType::Vertex);
shader->Shutdown();
delete shader;
}
TEST_P(RHITestFixture, Shader_Compile_MissingFile_ReturnsNullptr) {
ShaderCompileDesc desc = {};
if (GetBackendType() == RHIType::D3D12) {
desc.fileName = L"tests/RHI/D3D12/integration/quad/Res/Shader/does_not_exist.hlsl";
desc.entryPoint = L"MainVS";
desc.profile = L"vs_5_0";
} else {
desc.fileName = L"tests/RHI/OpenGL/integration/triangle/Res/Shader/does_not_exist.vert";
desc.entryPoint = L"main";
desc.profile = L"vs_4_30";
}
RHIShader* shader = GetDevice()->CreateShader(desc);
EXPECT_EQ(shader, nullptr);
}