Skip to content

Commit 421ffd3

Browse files
authored
Merge pull request #13 from UserLevelUp/dx11
Add operation for connecting to video card thru directx 11
2 parents d30ff50 + 6603555 commit 421ffd3

18 files changed

Lines changed: 521 additions & 0 deletions

BasicGameEngine.sln

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommandHistoryOperation", "
1515
EndProject
1616
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommandHistoryOperation1", "CommandHistoryOperation1\CommandHistoryOperation1.vcxproj", "{D1C1B5AB-583B-4D92-817E-580102AF2E21}"
1717
EndProject
18+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DX11Operation", "DX11Operation\DX11Operation.vcxproj", "{482D7C56-57B0-468F-8490-011B0B4BB56D}"
19+
EndProject
1820
Global
1921
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2022
Debug|ARM = Debug|ARM
@@ -107,13 +109,30 @@ Global
107109
{D1C1B5AB-583B-4D92-817E-580102AF2E21}.Release|x64.Build.0 = Release|x64
108110
{D1C1B5AB-583B-4D92-817E-580102AF2E21}.Release|x86.ActiveCfg = Release|Win32
109111
{D1C1B5AB-583B-4D92-817E-580102AF2E21}.Release|x86.Build.0 = Release|Win32
112+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|ARM.ActiveCfg = Debug|x64
113+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|ARM.Build.0 = Debug|x64
114+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|ARM64.ActiveCfg = Debug|x64
115+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|ARM64.Build.0 = Debug|x64
116+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|x64.ActiveCfg = Debug|x64
117+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|x64.Build.0 = Debug|x64
118+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|x86.ActiveCfg = Debug|Win32
119+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Debug|x86.Build.0 = Debug|Win32
120+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|ARM.ActiveCfg = Release|x64
121+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|ARM.Build.0 = Release|x64
122+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|ARM64.ActiveCfg = Release|x64
123+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|ARM64.Build.0 = Release|x64
124+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|x64.ActiveCfg = Release|x64
125+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|x64.Build.0 = Release|x64
126+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|x86.ActiveCfg = Release|Win32
127+
{482D7C56-57B0-468F-8490-011B0B4BB56D}.Release|x86.Build.0 = Release|Win32
110128
EndGlobalSection
111129
GlobalSection(SolutionProperties) = preSolution
112130
HideSolutionNode = FALSE
113131
EndGlobalSection
114132
GlobalSection(NestedProjects) = preSolution
115133
{9E3D9643-A834-4FDA-A406-52540CCD6226} = {9980BB65-19FB-4941-83BA-74534825FB9D}
116134
{D1C1B5AB-583B-4D92-817E-580102AF2E21} = {9980BB65-19FB-4941-83BA-74534825FB9D}
135+
{482D7C56-57B0-468F-8490-011B0B4BB56D} = {9980BB65-19FB-4941-83BA-74534825FB9D}
117136
EndGlobalSection
118137
GlobalSection(ExtensibilityGlobals) = postSolution
119138
SolutionGuid = {D3E28ACF-2934-43DE-B490-360214FA35D3}

BasicGameEngine/BasicGameEngine.vcxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,13 @@
118118
<ForceConformanceInForLoopScope>false</ForceConformanceInForLoopScope>
119119
<RemoveUnreferencedCodeData>false</RemoveUnreferencedCodeData>
120120
<LanguageStandard_C>stdc17</LanguageStandard_C>
121+
<AdditionalIncludeDirectories>$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
121122
</ClCompile>
122123
<Link>
123124
<SubSystem>Windows</SubSystem>
124125
<GenerateDebugInformation>true</GenerateDebugInformation>
126+
<AdditionalDependencies> User32.lib;Gdi32.lib;Shell32.lib;Advapi32.lib;Ole32.lib;</AdditionalDependencies>
127+
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86</AdditionalLibraryDirectories>
125128
</Link>
126129
</ItemDefinitionGroup>
127130
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -143,6 +146,7 @@
143146
<ItemGroup>
144147
<ClInclude Include="include\BasicGameEngine.h" />
145148
<ClInclude Include="framework.h" />
149+
<ClInclude Include="include\DirectXIncludes.h" />
146150
<ClInclude Include="include\InterprocessComm.h" />
147151
<ClInclude Include="include\InterprocessCommMgr.h" />
148152
<ClInclude Include="Resource.h" />

BasicGameEngine/BasicGameEngine.vcxproj.filters

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
<ClInclude Include="include\UserPrivilegeMgr.h">
5858
<Filter>Header Files</Filter>
5959
</ClInclude>
60+
<ClInclude Include="include\DirectXIncludes.h">
61+
<Filter>Header Files</Filter>
62+
</ClInclude>
6063
</ItemGroup>
6164
<ItemGroup>
6265
<ClCompile Include="src\BasicGameEngine.cpp">

BasicGameEngine/include/DirectXIncludes.h

Whitespace-only changes.

BasicGameEngine_UnitTest/BasicGameEngine_UnitTest.vcxproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
<Link>
107107
<SubSystem>Windows</SubSystem>
108108
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
109+
<AdditionalDependencies>d3d11.lib;dxgi.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
109110
</Link>
110111
</ItemDefinitionGroup>
111112
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -166,21 +167,27 @@
166167
<ItemGroup>
167168
<ClCompile Include="BasicGameEngine_UnitTest.cpp" />
168169
<ClCompile Include="CommandHistoryOperation_UnitTest.cpp" />
170+
<ClCompile Include="DirextXOperation_UnitTest.cpp" />
169171
<ClCompile Include="pch.cpp">
170172
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
171173
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
172174
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
173175
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
174176
</ClCompile>
177+
<ClCompile Include="VideoCard_UnitTest.cpp" />
175178
</ItemGroup>
176179
<ItemGroup>
177180
<ClInclude Include="Main.h" />
178181
<ClInclude Include="pch.h" />
182+
<ClInclude Include="VideoCard_UnitTest.h" />
179183
</ItemGroup>
180184
<ItemGroup>
181185
<ProjectReference Include="..\CommandHistoryOperation\CommandHistoryOperation.vcxproj">
182186
<Project>{9e3d9643-a834-4fda-a406-52540ccd6226}</Project>
183187
</ProjectReference>
188+
<ProjectReference Include="..\DX11Operation\DX11Operation.vcxproj">
189+
<Project>{482d7c56-57b0-468f-8490-011b0b4bb56d}</Project>
190+
</ProjectReference>
184191
<ProjectReference Include="..\OpNode\OpNode.vcxproj">
185192
<Project>{bb84b704-82c7-4696-b2b4-b8b5b51f57f7}</Project>
186193
</ProjectReference>

BasicGameEngine_UnitTest/BasicGameEngine_UnitTest.vcxproj.filters

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
<ClCompile Include="CommandHistoryOperation_UnitTest.cpp">
2525
<Filter>Source Files</Filter>
2626
</ClCompile>
27+
<ClCompile Include="DirextXOperation_UnitTest.cpp">
28+
<Filter>Source Files</Filter>
29+
</ClCompile>
30+
<ClCompile Include="VideoCard_UnitTest.cpp">
31+
<Filter>Source Files</Filter>
32+
</ClCompile>
2733
</ItemGroup>
2834
<ItemGroup>
2935
<ClInclude Include="pch.h">
@@ -32,5 +38,8 @@
3238
<ClInclude Include="Main.h">
3339
<Filter>Header Files</Filter>
3440
</ClInclude>
41+
<ClInclude Include="VideoCard_UnitTest.h">
42+
<Filter>Header Files</Filter>
43+
</ClInclude>
3544
</ItemGroup>
3645
</Project>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// DirectXOperation_UnitTest.cpp
2+
#include "pch.h"
3+
#include "CppUnitTest.h"
4+
#include "../DX11Operation/DirectXOperation.h"
5+
#include <Windows.h> // Include Windows API header for LoadLibrary, FreeLibrary
6+
#include <memory>
7+
#include <iostream>
8+
#include <filesystem>
9+
#include "../OpNode/IOperate.h" // Include IOperate from OpNode project
10+
11+
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
12+
13+
namespace DirectXOperationTests {
14+
15+
// Simple window procedure for a dummy window.
16+
LRESULT CALLBACK DummyWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
17+
return DefWindowProc(hWnd, message, wParam, lParam);
18+
}
19+
20+
// Helper function to create a hidden window.
21+
HWND CreateDummyWindow() {
22+
const wchar_t CLASS_NAME[] = L"DummyWindowClass";
23+
24+
WNDCLASS wc = {};
25+
wc.lpfnWndProc = DummyWndProc;
26+
wc.hInstance = GetModuleHandle(nullptr);
27+
wc.lpszClassName = CLASS_NAME;
28+
RegisterClass(&wc);
29+
30+
HWND hWnd = CreateWindowEx(
31+
0, // Optional window styles.
32+
CLASS_NAME, // Window class
33+
L"Dummy Window", // Window text
34+
WS_OVERLAPPEDWINDOW, // Window style
35+
CW_USEDEFAULT, CW_USEDEFAULT, 800, 600,
36+
nullptr, // Parent window
37+
nullptr, // Menu
38+
GetModuleHandle(nullptr), // Instance handle
39+
nullptr // Additional application data
40+
);
41+
42+
// Hide the window (for unit testing, no need to show it).
43+
ShowWindow(hWnd, SW_HIDE);
44+
return hWnd;
45+
}
46+
47+
TEST_CLASS(DirectXOperationUnitTests)
48+
{
49+
public:
50+
TEST_METHOD(TestDirectXInitialization) {
51+
HWND hWnd = CreateDummyWindow();
52+
DirectXOperation dxOp;
53+
bool result = dxOp.Initialize(hWnd, 800, 600);
54+
Assert::IsTrue(result, L"DirectXOperation should initialize successfully.");
55+
56+
// Optionally call Render to see if the device works.
57+
dxOp.Render();
58+
dxOp.Cleanup();
59+
DestroyWindow(hWnd); // Clean up dummy window.
60+
}
61+
};
62+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include "pch.h"
2+
#include "VideoCard_UnitTest.h"
3+
4+
#include "CppUnitTest.h"
5+
#include <dxgi.h>
6+
#include <wrl/client.h>
7+
#include <string>
8+
9+
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
10+
using Microsoft::WRL::ComPtr;
11+
12+
namespace BasicGameEngine_UnitTests
13+
{
14+
TEST_CLASS(VideoCardTests)
15+
{
16+
public:
17+
TEST_METHOD(TestEnumerateVideoCards)
18+
{
19+
// Create a DXGI factory
20+
ComPtr<IDXGIFactory> factory;
21+
HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), reinterpret_cast<void**>(factory.GetAddressOf()));
22+
Assert::IsTrue(SUCCEEDED(hr), L"Failed to create DXGIFactory.");
23+
24+
// Enumerate the first adapter (video card)
25+
ComPtr<IDXGIAdapter> adapter;
26+
hr = factory->EnumAdapters(0, &adapter);
27+
Assert::IsTrue(SUCCEEDED(hr), L"No video adapter found.");
28+
29+
// Retrieve the adapter description
30+
DXGI_ADAPTER_DESC adapterDesc = {};
31+
hr = adapter->GetDesc(&adapterDesc);
32+
Assert::IsTrue(SUCCEEDED(hr), L"Failed to get adapter description.");
33+
34+
// Convert the wide string description to a wstring
35+
std::wstring adapterDescription(adapterDesc.Description);
36+
Logger::WriteMessage((L"Video Card: " + adapterDescription).c_str());
37+
38+
// Assert that the description is not empty
39+
Assert::IsFalse(adapterDescription.empty(), L"Adapter description is empty.");
40+
}
41+
};
42+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#pragma once
2+
class VideoCard_UnitTest
3+
{
4+
};
5+

0 commit comments

Comments
 (0)