Skip to content

Commit c2b8d84

Browse files
committed
06_Triangle
Drawing & Filling a 'Triangle'.
1 parent 9099778 commit c2b8d84

25 files changed

+1600
-0
lines changed

06_Triangle/06_Triangle.vcxproj

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|Win32">
5+
<Configuration>Debug</Configuration>
6+
<Platform>Win32</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|Win32">
9+
<Configuration>Release</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
<ProjectConfiguration Include="Debug|x64">
13+
<Configuration>Debug</Configuration>
14+
<Platform>x64</Platform>
15+
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|x64">
17+
<Configuration>Release</Configuration>
18+
<Platform>x64</Platform>
19+
</ProjectConfiguration>
20+
</ItemGroup>
21+
<PropertyGroup Label="Globals">
22+
<ProjectGuid>{CC073951-1040-4884-90A4-5A760C026D6F}</ProjectGuid>
23+
<RootNamespace>06_Triangle</RootNamespace>
24+
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
25+
</PropertyGroup>
26+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
27+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
28+
<ConfigurationType>Application</ConfigurationType>
29+
<UseDebugLibraries>true</UseDebugLibraries>
30+
<PlatformToolset>v140</PlatformToolset>
31+
<CharacterSet>MultiByte</CharacterSet>
32+
</PropertyGroup>
33+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
34+
<ConfigurationType>Application</ConfigurationType>
35+
<UseDebugLibraries>false</UseDebugLibraries>
36+
<PlatformToolset>v141</PlatformToolset>
37+
<WholeProgramOptimization>true</WholeProgramOptimization>
38+
<CharacterSet>MultiByte</CharacterSet>
39+
</PropertyGroup>
40+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
41+
<ConfigurationType>Application</ConfigurationType>
42+
<UseDebugLibraries>true</UseDebugLibraries>
43+
<PlatformToolset>v141</PlatformToolset>
44+
<CharacterSet>MultiByte</CharacterSet>
45+
</PropertyGroup>
46+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
47+
<ConfigurationType>Application</ConfigurationType>
48+
<UseDebugLibraries>false</UseDebugLibraries>
49+
<PlatformToolset>v141</PlatformToolset>
50+
<WholeProgramOptimization>true</WholeProgramOptimization>
51+
<CharacterSet>MultiByte</CharacterSet>
52+
</PropertyGroup>
53+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
54+
<ImportGroup Label="ExtensionSettings">
55+
</ImportGroup>
56+
<ImportGroup Label="Shared">
57+
</ImportGroup>
58+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
59+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
60+
</ImportGroup>
61+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
62+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
63+
</ImportGroup>
64+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
65+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
66+
</ImportGroup>
67+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
68+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
69+
</ImportGroup>
70+
<PropertyGroup Label="UserMacros" />
71+
<PropertyGroup />
72+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
73+
<ClCompile>
74+
<WarningLevel>Level3</WarningLevel>
75+
<Optimization>Disabled</Optimization>
76+
<SDLCheck>true</SDLCheck>
77+
<AdditionalIncludeDirectories>include;$(SolutionDir)external-deps/GLFW/include;$(SolutionDir)external-deps/GLM;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
78+
</ClCompile>
79+
<Link>
80+
<AdditionalLibraryDirectories>$(SolutionDir)external-deps/GLFW/lib-vc2015;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
81+
<AdditionalDependencies>opengl32.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
82+
<SubSystem>Console</SubSystem>
83+
</Link>
84+
</ItemDefinitionGroup>
85+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
86+
<ClCompile>
87+
<WarningLevel>Level3</WarningLevel>
88+
<Optimization>Disabled</Optimization>
89+
<SDLCheck>true</SDLCheck>
90+
</ClCompile>
91+
</ItemDefinitionGroup>
92+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
93+
<ClCompile>
94+
<WarningLevel>Level3</WarningLevel>
95+
<Optimization>MaxSpeed</Optimization>
96+
<FunctionLevelLinking>true</FunctionLevelLinking>
97+
<IntrinsicFunctions>true</IntrinsicFunctions>
98+
<SDLCheck>true</SDLCheck>
99+
</ClCompile>
100+
<Link>
101+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
102+
<OptimizeReferences>true</OptimizeReferences>
103+
<AdditionalDependencies>opengl32.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
104+
</Link>
105+
</ItemDefinitionGroup>
106+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
107+
<ClCompile>
108+
<WarningLevel>Level3</WarningLevel>
109+
<Optimization>MaxSpeed</Optimization>
110+
<FunctionLevelLinking>true</FunctionLevelLinking>
111+
<IntrinsicFunctions>true</IntrinsicFunctions>
112+
<SDLCheck>true</SDLCheck>
113+
</ClCompile>
114+
<Link>
115+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
116+
<OptimizeReferences>true</OptimizeReferences>
117+
</Link>
118+
</ItemDefinitionGroup>
119+
<ItemGroup>
120+
<ClCompile Include="src\3D\Vector4f.cpp" />
121+
<ClCompile Include="src\Common\Pixel.cpp" />
122+
<ClCompile Include="src\Common\Sprite.cpp" />
123+
<ClCompile Include="src\Engine\GameEngine.cpp" />
124+
<ClCompile Include="src\Engine\InputManager.cpp" />
125+
<ClCompile Include="src\Engine\Timer.cpp" />
126+
<ClCompile Include="src\main.cpp" />
127+
<ClCompile Include="src\Renderer\Edge.cpp" />
128+
<ClCompile Include="src\Renderer\Graphics.cpp" />
129+
</ItemGroup>
130+
<ItemGroup>
131+
<ClInclude Include="include\3D\Vector4f.h" />
132+
<ClInclude Include="include\3D\Vertex.h" />
133+
<ClInclude Include="include\Common\Defines.h" />
134+
<ClInclude Include="include\Common\Pixel.h" />
135+
<ClInclude Include="include\Common\Singleton.h" />
136+
<ClInclude Include="include\Common\Sprite.h" />
137+
<ClInclude Include="include\Engine\GameEngine.h" />
138+
<ClInclude Include="include\Engine\InputManager.h" />
139+
<ClInclude Include="include\Engine\Timer.h" />
140+
<ClInclude Include="include\Renderer\Edge.h" />
141+
<ClInclude Include="include\Renderer\Graphics.h" />
142+
</ItemGroup>
143+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
144+
<ImportGroup Label="ExtensionTargets">
145+
</ImportGroup>
146+
</Project>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<Filter Include="Source Files">
5+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+
</Filter>
8+
<Filter Include="Header Files">
9+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
11+
</Filter>
12+
<Filter Include="Resource Files">
13+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClCompile Include="src\main.cpp">
19+
<Filter>Source Files</Filter>
20+
</ClCompile>
21+
<ClCompile Include="src\Engine\GameEngine.cpp">
22+
<Filter>Source Files</Filter>
23+
</ClCompile>
24+
<ClCompile Include="src\Engine\InputManager.cpp">
25+
<Filter>Source Files</Filter>
26+
</ClCompile>
27+
<ClCompile Include="src\Engine\Timer.cpp">
28+
<Filter>Source Files</Filter>
29+
</ClCompile>
30+
<ClCompile Include="src\Common\Pixel.cpp">
31+
<Filter>Source Files</Filter>
32+
</ClCompile>
33+
<ClCompile Include="src\Common\Sprite.cpp">
34+
<Filter>Source Files</Filter>
35+
</ClCompile>
36+
<ClCompile Include="src\Renderer\Graphics.cpp">
37+
<Filter>Source Files</Filter>
38+
</ClCompile>
39+
<ClCompile Include="src\3D\Vector4f.cpp">
40+
<Filter>Source Files</Filter>
41+
</ClCompile>
42+
<ClCompile Include="src\Renderer\Edge.cpp">
43+
<Filter>Source Files</Filter>
44+
</ClCompile>
45+
</ItemGroup>
46+
<ItemGroup>
47+
<ClInclude Include="include\Engine\GameEngine.h">
48+
<Filter>Header Files</Filter>
49+
</ClInclude>
50+
<ClInclude Include="include\Common\Defines.h">
51+
<Filter>Header Files</Filter>
52+
</ClInclude>
53+
<ClInclude Include="include\Engine\InputManager.h">
54+
<Filter>Header Files</Filter>
55+
</ClInclude>
56+
<ClInclude Include="include\Common\Singleton.h">
57+
<Filter>Header Files</Filter>
58+
</ClInclude>
59+
<ClInclude Include="include\Engine\Timer.h">
60+
<Filter>Header Files</Filter>
61+
</ClInclude>
62+
<ClInclude Include="include\Common\Pixel.h">
63+
<Filter>Header Files</Filter>
64+
</ClInclude>
65+
<ClInclude Include="include\Common\Sprite.h">
66+
<Filter>Header Files</Filter>
67+
</ClInclude>
68+
<ClInclude Include="include\Renderer\Graphics.h">
69+
<Filter>Header Files</Filter>
70+
</ClInclude>
71+
<ClInclude Include="include\3D\Vector4f.h">
72+
<Filter>Header Files</Filter>
73+
</ClInclude>
74+
<ClInclude Include="include\3D\Vertex.h">
75+
<Filter>Header Files</Filter>
76+
</ClInclude>
77+
<ClInclude Include="include\Renderer\Edge.h">
78+
<Filter>Header Files</Filter>
79+
</ClInclude>
80+
</ItemGroup>
81+
</Project>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<ShowAllFiles>true</ShowAllFiles>
5+
</PropertyGroup>
6+
</Project>

06_Triangle/include/3D/Vector4f.h

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#pragma once
2+
#include <string>
3+
4+
class Vector4f
5+
{
6+
public:
7+
Vector4f();
8+
Vector4f(float x, float y, float z);
9+
Vector4f(float x, float y, float z, float w);
10+
float length();
11+
float max_();
12+
float dot(Vector4f r);
13+
float dot(Vector4f* r);
14+
Vector4f cross(Vector4f r);
15+
Vector4f normalized();
16+
Vector4f rotate(Vector4f axis, float angle);
17+
Vector4f lerp(Vector4f dest, float lerpFactor);
18+
19+
Vector4f operator+(Vector4f r);
20+
void operator+=(Vector4f r);
21+
Vector4f operator+(float r);
22+
void operator+=(float r);
23+
Vector4f add(Vector4f r);
24+
Vector4f add(float r);
25+
26+
Vector4f operator-(Vector4f r);
27+
void operator-=(Vector4f r);
28+
Vector4f operator-(float r);
29+
void operator-=(float r);
30+
Vector4f sub(Vector4f r);
31+
Vector4f sub(float r);
32+
33+
Vector4f operator*(Vector4f r);
34+
Vector4f operator*(float r);
35+
void operator*=(Vector4f r);
36+
void operator*=(float r);
37+
Vector4f mul(Vector4f r);
38+
Vector4f mul(float r);
39+
40+
Vector4f operator/(Vector4f r);
41+
Vector4f operator/(float r);
42+
void operator/=(Vector4f r);
43+
void operator/=(float r);
44+
Vector4f div(Vector4f r);
45+
Vector4f div(float r);
46+
47+
Vector4f abs_();
48+
std::string toString();
49+
float getX();
50+
float getY();
51+
float getZ();
52+
float getW();
53+
bool equals(Vector4f r);
54+
55+
float x;
56+
float y;
57+
float z;
58+
float w;
59+
protected:
60+
private:
61+
};

06_Triangle/include/3D/Vertex.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
#include "3D/Vector4f.h"
3+
4+
class Vertex
5+
{
6+
public:
7+
Vector4f m_vPosition;
8+
9+
Vertex() {}
10+
Vertex(Vector4f vPosition)
11+
{
12+
m_vPosition = vPosition;
13+
}
14+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#pragma once
2+
3+
#include <stdint.h>
4+
#include <stdlib.h>
5+
#include <iostream>
6+
#include <GLFW/glfw3.h>
7+
8+
#define DEFAULT_WIDTH 480
9+
#define DEFAULT_HEIGHT 320
10+
11+
#define USE_BRESENHAM
12+
13+
enum DURATION_TYPE
14+
{
15+
nanoseconds = 0,
16+
microseconds,
17+
milliseconds,
18+
seconds,
19+
minutes,
20+
hours
21+
};
22+
23+
#define TIMER_START_NEW(__identifier__) \
24+
Timer __identifier__; \
25+
TIMER_START(__identifier__); \
26+
27+
#define TIMER_START(__identifier__) __identifier__.start();
28+
#define TIMER_STOP(__identifier__) __identifier__.stop();
29+
30+
#define CLAMP(__min__, __value__, __max__) \
31+
if(__value__ < __min__) __value__ = __min__; \
32+
else if(__value__ > __max__) __value__ = __max__; \
33+
34+
#define LERP(__start__, __end__, __amount__) __start__ + (__end__ - __start__) * __amount__

06_Triangle/include/Common/Pixel.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
#include <stdint.h>
3+
4+
class Pixel
5+
{
6+
public:
7+
union
8+
{
9+
uint32_t m_iPixel = 0xFF000000;
10+
struct
11+
{
12+
uint8_t m_iRed;
13+
uint8_t m_iGreen;
14+
uint8_t m_iBlue;
15+
uint8_t m_iAlpha;
16+
};
17+
};
18+
19+
Pixel();
20+
Pixel(uint8_t iRed, uint8_t iGreen, uint8_t iBlue, uint8_t iAlpha = 255);
21+
Pixel(uint32_t iPixel);
22+
uint32_t getPixel();
23+
24+
bool operator==(const Pixel& p) const;
25+
bool operator!=(const Pixel& p) const;
26+
protected:
27+
private:
28+
};

0 commit comments

Comments
 (0)