Browse Source

Texture 샘플 추가.

Hongtae Kim 5 years ago
parent
commit
193b10fde3

+ 10
- 0
Samples.sln View File

@@ -7,6 +7,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Triangle", "Samples\Triangl
7 7
 EndProject
8 8
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DK_static", "..\DKGL2\DK\DK_static.vcxproj", "{C7312831-A3F6-4E7D-962B-6786972F0A6A}"
9 9
 EndProject
10
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Texture", "Samples\Texture\Texture.vcxproj", "{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}"
11
+EndProject
10 12
 Global
11 13
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 14
 		Debug|x64 = Debug|x64
@@ -31,6 +33,14 @@ Global
31 33
 		{C7312831-A3F6-4E7D-962B-6786972F0A6A}.Release|x64.Build.0 = Release|x64
32 34
 		{C7312831-A3F6-4E7D-962B-6786972F0A6A}.Release|x86.ActiveCfg = Release|Win32
33 35
 		{C7312831-A3F6-4E7D-962B-6786972F0A6A}.Release|x86.Build.0 = Release|Win32
36
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Debug|x64.ActiveCfg = Debug|x64
37
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Debug|x64.Build.0 = Debug|x64
38
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Debug|x86.ActiveCfg = Debug|Win32
39
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Debug|x86.Build.0 = Debug|Win32
40
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x64.ActiveCfg = Release|x64
41
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x64.Build.0 = Release|x64
42
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x86.ActiveCfg = Release|Win32
43
+		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x86.Build.0 = Release|Win32
34 44
 	EndGlobalSection
35 45
 	GlobalSection(SolutionProperties) = preSolution
36 46
 		HideSolutionNode = FALSE

+ 210
- 0
Samples/Texture/Texture.cpp View File

@@ -0,0 +1,210 @@
1
+
2
+#include "app.h"
3
+#include "util.h"
4
+
5
+
6
+class TextureDemo : public SampleApp
7
+{
8
+    DKObject<DKWindow> window;
9
+	DKObject<DKThread> renderThread;
10
+	DKAtomicNumber32 runningRenderThread;
11
+
12
+public:
13
+	void RenderThread(void)
14
+	{
15
+		DKObject<DKData> vertData = resourcePool.LoadResourceData("triangle.vert.spv");
16
+		DKObject<DKData> fragData = resourcePool.LoadResourceData("triangle.frag.spv");
17
+		DKShader vertShader(vertData);
18
+		DKShader fragShader(fragData);
19
+
20
+		DKObject<DKGraphicsDevice> device = DKGraphicsDevice::SharedInstance();
21
+		DKObject<DKShaderModule> vertShaderModule = device->CreateShaderModule(&vertShader);
22
+		DKObject<DKShaderModule> fragShaderModule = device->CreateShaderModule(&fragShader);
23
+
24
+		DKObject<DKShaderFunction> vertShaderFunction = vertShaderModule->CreateFunction(vertShaderModule->FunctionNames().Value(0));
25
+		DKObject<DKShaderFunction> fragShaderFunction = fragShaderModule->CreateFunction(fragShaderModule->FunctionNames().Value(0));
26
+
27
+		DKObject<DKCommandQueue> queue = device->CreateCommandQueue(DKCommandQueue::Graphics);
28
+		DKObject<DKSwapChain> swapChain = queue->CreateSwapChain(window);
29
+
30
+		DKLog("VertexFunction.VertexAttributes: %d", vertShaderFunction->StageInputAttributes().Count());
31
+		for (int i = 0; i < vertShaderFunction->StageInputAttributes().Count(); ++i)
32
+		{
33
+			const DKShaderAttribute& attr = vertShaderFunction->StageInputAttributes().Value(i);
34
+			DKLog("  --> VertexAttribute[%d]: \"%ls\" (location:%u)", i, (const wchar_t*)attr.name, attr.location);
35
+		}
36
+
37
+		struct Vertex
38
+		{
39
+			DKVector3 position;
40
+			DKVector3 color;
41
+		};
42
+		DKArray<Vertex> vertexData =
43
+		{
44
+			{ {  0.0f, -0.5f, 0.0f },{ 1.0f, 1.0f, 1.0f } },
45
+			{ {  0.5f,  0.5f, 0.0f },{ 0.0f, 1.0f, 0.0f } },
46
+			{ { -0.5f,  0.5f, 0.0f },{ 0.0f, 0.0f, 1.0f } }
47
+		};
48
+		uint32_t vertexBufferSize = static_cast<uint32_t>(vertexData.Count()) * sizeof(Vertex);
49
+		DKArray<uint32_t> indexData = { 0, 1, 2 };
50
+		uint32_t indexBufferSize = indexData.Count() * sizeof(uint32_t);
51
+
52
+		DKObject<DKGpuBuffer> vertexBuffer = device->CreateBuffer(vertexBufferSize, DKGpuBuffer::StorageModeShared, DKCpuCacheModeDefault);
53
+		memcpy(vertexBuffer->Lock(), vertexData, vertexBufferSize);
54
+		vertexBuffer->Unlock();
55
+
56
+		DKObject<DKGpuBuffer> indexBuffer = device->CreateBuffer(indexBufferSize, DKGpuBuffer::StorageModeShared, DKCpuCacheModeDefault);
57
+		memcpy(indexBuffer->Lock(), indexData, indexBufferSize);
58
+		indexBuffer->Unlock();
59
+
60
+		DKRenderPipelineDescriptor pipelineDescriptor;
61
+		pipelineDescriptor.vertexFunction = vertShaderFunction;
62
+		pipelineDescriptor.fragmentFunction = fragShaderFunction;
63
+		pipelineDescriptor.colorAttachments.Resize(1);
64
+		pipelineDescriptor.colorAttachments.Value(0).pixelFormat = swapChain->ColorPixelFormat();
65
+		pipelineDescriptor.depthStencilAttachmentPixelFormat = DKPixelFormat::Invalid; // no depth buffer
66
+		pipelineDescriptor.vertexDescriptor.attributes = {
67
+			{ DKVertexFormat::Float3, 0, 0, 0 },
68
+			{ DKVertexFormat::Float3, sizeof(DKVector3), 0, 1 },
69
+		};
70
+		pipelineDescriptor.vertexDescriptor.layouts = {
71
+			{ DKVertexStepRate::Vertex, sizeof(Vertex), 0 },
72
+		};
73
+		pipelineDescriptor.primitiveTopology = DKPrimitiveType::Triangle;
74
+		pipelineDescriptor.frontFace = DKFrontFace::CCW;
75
+		pipelineDescriptor.triangleFillMode = DKTriangleFillMode::Fill;
76
+		pipelineDescriptor.depthClipMode = DKDepthClipMode::Clip;
77
+		pipelineDescriptor.cullMode = DKCullMode::None;
78
+		pipelineDescriptor.rasterizationEnabled = true;
79
+
80
+		DKPipelineReflection reflection;
81
+		DKObject<DKRenderPipelineState> pipelineState = device->CreateRenderPipeline(pipelineDescriptor, &reflection);
82
+		if (pipelineState)
83
+		{
84
+            PrintPipelineReflection(&reflection, DKLogCategory::Verbose);
85
+		}
86
+
87
+        DKShaderBindingSetLayout layout;
88
+        if (1)
89
+        {
90
+            DKShaderBinding binding = {
91
+                0,
92
+                DKShader::DescriptorTypeUniformBuffer,
93
+                1,
94
+                nullptr
95
+            };
96
+            layout.bindings.Add(binding);
97
+        }
98
+        DKObject<DKShaderBindingSet> bindSet = device->CreateShaderBindingSet(layout);
99
+        if (bindSet)
100
+        {
101
+            struct
102
+            {
103
+                DKMatrix4 projectionMatrix;
104
+                DKMatrix4 modelMatrix;
105
+                DKMatrix4 viewMatrix;
106
+            } ubo;
107
+
108
+            DKObject<DKGpuBuffer> uboBuffer = device->CreateBuffer(sizeof(ubo), DKGpuBuffer::StorageModeShared, DKCpuCacheModeDefault);
109
+            if (uboBuffer)
110
+            {
111
+                ubo.projectionMatrix = DKMatrix4::identity;
112
+                ubo.modelMatrix = DKMatrix4::identity;
113
+                ubo.viewMatrix = DKMatrix4::identity;
114
+
115
+                void* p = uboBuffer->Lock(0);
116
+                if (p)
117
+                {
118
+                    memcpy(p, &ubo, sizeof(ubo));
119
+                    uboBuffer->Unlock();
120
+
121
+                    bindSet->SetBuffer(0, uboBuffer, 0, sizeof(ubo));
122
+                }
123
+                else
124
+                {
125
+                    DKLogE("GpuBuffer Lock failed!");
126
+                }
127
+            }
128
+        }
129
+
130
+		DKTimer timer;
131
+		timer.Reset();
132
+
133
+		DKLog("Render thread begin");
134
+		while (!runningRenderThread.CompareAndSet(0, 0))
135
+		{
136
+			DKRenderPassDescriptor rpd = swapChain->CurrentRenderPassDescriptor();
137
+			double t = timer.Elapsed();
138
+			t = (cos(t) + 1.0) * 0.5;
139
+			rpd.colorAttachments.Value(0).clearColor = DKColor(t, 0.0, 0.0, 0.0);
140
+
141
+			DKObject<DKCommandBuffer> buffer = queue->CreateCommandBuffer();
142
+			DKObject<DKRenderCommandEncoder> encoder = buffer->CreateRenderCommandEncoder(rpd);
143
+			if (encoder)
144
+			{
145
+				encoder->SetRenderPipelineState(pipelineState);
146
+				encoder->SetVertexBuffer(vertexBuffer, 0, 0);
147
+				encoder->SetIndexBuffer(indexBuffer, 0, DKIndexType::UInt32);
148
+                encoder->SetResources(0, bindSet);
149
+				// draw scene!
150
+				encoder->DrawIndexed(indexData.Count(), 1, 0, 0, 0);
151
+				encoder->EndEncoding();
152
+				buffer->Commit();
153
+				swapChain->Present();
154
+			}
155
+			else
156
+			{
157
+			}
158
+			DKThread::Sleep(0.01);
159
+		}
160
+		DKLog("RenderThread terminating...");
161
+	}
162
+
163
+	void OnInitialize(void) override
164
+	{
165
+        SampleApp::OnInitialize();
166
+		DKLogD("%s", DKGL_FUNCTION_NAME);
167
+
168
+        // create window
169
+        window = DKWindow::Create("DefaultWindow");
170
+        window->SetOrigin({ 0, 0 });
171
+        window->Resize({ 320, 240 });
172
+        window->Activate();
173
+
174
+        window->AddEventHandler(this, DKFunction([this](const DKWindow::WindowEvent& e)
175
+        {
176
+            if (e.type == DKWindow::WindowEvent::WindowClosed)
177
+                DKApplication::Instance()->Terminate(0);
178
+        }), NULL, NULL);
179
+
180
+		runningRenderThread = 1;
181
+		renderThread = DKThread::Create(DKFunction(this, &TextureDemo::RenderThread)->Invocation());
182
+	}
183
+	void OnTerminate(void) override
184
+	{
185
+		DKLogD("%s", DKGL_FUNCTION_NAME);
186
+
187
+		runningRenderThread = 0;
188
+		renderThread->WaitTerminate();
189
+		renderThread = NULL;
190
+        window = NULL;
191
+
192
+        SampleApp::OnTerminate();
193
+	}
194
+};
195
+
196
+
197
+#ifdef _WIN32
198
+int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
199
+					  _In_opt_ HINSTANCE hPrevInstance,
200
+					  _In_ LPWSTR    lpCmdLine,
201
+					  _In_ int       nCmdShow)
202
+#else
203
+int main(int argc, const char * argv[])
204
+#endif
205
+{
206
+    TextureDemo app;
207
+	DKPropertySet::SystemConfig().SetValue("AppDelegate", "AppDelegate");
208
+	DKPropertySet::SystemConfig().SetValue("GraphicsAPI", "Vulkan");
209
+	return app.Run();
210
+}

+ 195
- 0
Samples/Texture/Texture.vcxproj View File

@@ -0,0 +1,195 @@
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
+  <ItemGroup>
22
+    <ClInclude Include="..\Common\app.h" />
23
+    <ClInclude Include="..\Common\util.h" />
24
+    <ClInclude Include="..\Common\Win32\Resource.h" />
25
+    <ClInclude Include="..\Common\Win32\stdafx.h" />
26
+    <ClInclude Include="..\Common\Win32\targetver.h" />
27
+  </ItemGroup>
28
+  <ItemGroup>
29
+    <Image Include="..\Common\Win32\SampleApp.ico" />
30
+    <Image Include="..\Common\Win32\small.ico" />
31
+  </ItemGroup>
32
+  <ItemGroup>
33
+    <ResourceCompile Include="..\Common\Win32\SampleApp.rc" />
34
+  </ItemGroup>
35
+  <ItemGroup>
36
+    <ClCompile Include="..\Common\dkgl_new.cpp" />
37
+    <ClCompile Include="Texture.cpp" />
38
+  </ItemGroup>
39
+  <ItemGroup>
40
+    <ProjectReference Include="..\..\..\DKGL2\DK\DK_static.vcxproj">
41
+      <Project>{c7312831-a3f6-4e7d-962b-6786972f0a6a}</Project>
42
+    </ProjectReference>
43
+  </ItemGroup>
44
+  <PropertyGroup Label="Globals">
45
+    <VCProjectVersion>15.0</VCProjectVersion>
46
+    <ProjectGuid>{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}</ProjectGuid>
47
+    <Keyword>Win32Proj</Keyword>
48
+    <RootNamespace>Texture</RootNamespace>
49
+    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
50
+  </PropertyGroup>
51
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
52
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
53
+    <ConfigurationType>Application</ConfigurationType>
54
+    <UseDebugLibraries>true</UseDebugLibraries>
55
+    <PlatformToolset>v141</PlatformToolset>
56
+    <CharacterSet>Unicode</CharacterSet>
57
+  </PropertyGroup>
58
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
59
+    <ConfigurationType>Application</ConfigurationType>
60
+    <UseDebugLibraries>false</UseDebugLibraries>
61
+    <PlatformToolset>v141</PlatformToolset>
62
+    <WholeProgramOptimization>true</WholeProgramOptimization>
63
+    <CharacterSet>Unicode</CharacterSet>
64
+  </PropertyGroup>
65
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
66
+    <ConfigurationType>Application</ConfigurationType>
67
+    <UseDebugLibraries>true</UseDebugLibraries>
68
+    <PlatformToolset>v141</PlatformToolset>
69
+    <CharacterSet>Unicode</CharacterSet>
70
+  </PropertyGroup>
71
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
72
+    <ConfigurationType>Application</ConfigurationType>
73
+    <UseDebugLibraries>false</UseDebugLibraries>
74
+    <PlatformToolset>v141</PlatformToolset>
75
+    <WholeProgramOptimization>true</WholeProgramOptimization>
76
+    <CharacterSet>Unicode</CharacterSet>
77
+  </PropertyGroup>
78
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
79
+  <ImportGroup Label="ExtensionSettings">
80
+  </ImportGroup>
81
+  <ImportGroup Label="Shared">
82
+  </ImportGroup>
83
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
84
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
85
+    <Import Project="..\..\Samples.props" />
86
+  </ImportGroup>
87
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
88
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
89
+    <Import Project="..\..\Samples.props" />
90
+  </ImportGroup>
91
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
92
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
93
+    <Import Project="..\..\Samples.props" />
94
+  </ImportGroup>
95
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
96
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
97
+    <Import Project="..\..\Samples.props" />
98
+  </ImportGroup>
99
+  <PropertyGroup Label="UserMacros" />
100
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
101
+    <LinkIncremental>true</LinkIncremental>
102
+  </PropertyGroup>
103
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
104
+    <LinkIncremental>true</LinkIncremental>
105
+  </PropertyGroup>
106
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
107
+    <LinkIncremental>false</LinkIncremental>
108
+  </PropertyGroup>
109
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
110
+    <LinkIncremental>false</LinkIncremental>
111
+  </PropertyGroup>
112
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
113
+    <ClCompile>
114
+      <WarningLevel>Level3</WarningLevel>
115
+      <Optimization>Disabled</Optimization>
116
+      <SDLCheck>true</SDLCheck>
117
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118
+      <ConformanceMode>true</ConformanceMode>
119
+    </ClCompile>
120
+    <Link>
121
+      <SubSystem>Windows</SubSystem>
122
+      <GenerateDebugInformation>true</GenerateDebugInformation>
123
+    </Link>
124
+    <PostBuildEvent>
125
+      <Command>echo Copying Resource Files...
126
+xcopy /Y /D /R /Q /E "$(SolutionDir)Samples\Data" "$(OutDir)Data\"
127
+</Command>
128
+    </PostBuildEvent>
129
+  </ItemDefinitionGroup>
130
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
131
+    <ClCompile>
132
+      <WarningLevel>Level3</WarningLevel>
133
+      <Optimization>Disabled</Optimization>
134
+      <SDLCheck>true</SDLCheck>
135
+      <PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
136
+      <ConformanceMode>true</ConformanceMode>
137
+    </ClCompile>
138
+    <Link>
139
+      <SubSystem>Windows</SubSystem>
140
+      <GenerateDebugInformation>true</GenerateDebugInformation>
141
+    </Link>
142
+    <PostBuildEvent>
143
+      <Command>echo Copying Resource Files...
144
+xcopy /Y /D /R /Q /E "$(SolutionDir)Samples\Data" "$(OutDir)Data\"
145
+</Command>
146
+    </PostBuildEvent>
147
+  </ItemDefinitionGroup>
148
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
149
+    <ClCompile>
150
+      <WarningLevel>Level3</WarningLevel>
151
+      <Optimization>MaxSpeed</Optimization>
152
+      <FunctionLevelLinking>true</FunctionLevelLinking>
153
+      <IntrinsicFunctions>true</IntrinsicFunctions>
154
+      <SDLCheck>true</SDLCheck>
155
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
156
+      <ConformanceMode>true</ConformanceMode>
157
+    </ClCompile>
158
+    <Link>
159
+      <SubSystem>Windows</SubSystem>
160
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
161
+      <OptimizeReferences>true</OptimizeReferences>
162
+      <GenerateDebugInformation>true</GenerateDebugInformation>
163
+    </Link>
164
+    <PostBuildEvent>
165
+      <Command>echo Copying Resource Files...
166
+xcopy /Y /D /R /Q /E "$(SolutionDir)Samples\Data" "$(OutDir)Data\"
167
+</Command>
168
+    </PostBuildEvent>
169
+  </ItemDefinitionGroup>
170
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
171
+    <ClCompile>
172
+      <WarningLevel>Level3</WarningLevel>
173
+      <Optimization>MaxSpeed</Optimization>
174
+      <FunctionLevelLinking>true</FunctionLevelLinking>
175
+      <IntrinsicFunctions>true</IntrinsicFunctions>
176
+      <SDLCheck>true</SDLCheck>
177
+      <PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
178
+      <ConformanceMode>true</ConformanceMode>
179
+    </ClCompile>
180
+    <Link>
181
+      <SubSystem>Windows</SubSystem>
182
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
183
+      <OptimizeReferences>true</OptimizeReferences>
184
+      <GenerateDebugInformation>true</GenerateDebugInformation>
185
+    </Link>
186
+    <PostBuildEvent>
187
+      <Command>echo Copying Resource Files...
188
+xcopy /Y /D /R /Q /E "$(SolutionDir)Samples\Data" "$(OutDir)Data\"
189
+</Command>
190
+    </PostBuildEvent>
191
+  </ItemDefinitionGroup>
192
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
193
+  <ImportGroup Label="ExtensionTargets">
194
+  </ImportGroup>
195
+</Project>

+ 52
- 0
Samples/Texture/Texture.vcxproj.filters View File

@@ -0,0 +1,52 @@
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>{b5dc83ca-43a3-419d-ad59-977da7f4e408}</UniqueIdentifier>
6
+    </Filter>
7
+    <Filter Include="Common">
8
+      <UniqueIdentifier>{e5e3c3a7-54d9-4bd7-bb17-507ba17c21ff}</UniqueIdentifier>
9
+    </Filter>
10
+    <Filter Include="Common\Win32">
11
+      <UniqueIdentifier>{1e5cf7df-b5b9-4e2b-b747-f1a2d7810117}</UniqueIdentifier>
12
+    </Filter>
13
+  </ItemGroup>
14
+  <ItemGroup>
15
+    <ClInclude Include="..\Common\Win32\Resource.h">
16
+      <Filter>Common\Win32</Filter>
17
+    </ClInclude>
18
+    <ClInclude Include="..\Common\Win32\stdafx.h">
19
+      <Filter>Common\Win32</Filter>
20
+    </ClInclude>
21
+    <ClInclude Include="..\Common\Win32\targetver.h">
22
+      <Filter>Common\Win32</Filter>
23
+    </ClInclude>
24
+    <ClInclude Include="..\Common\app.h">
25
+      <Filter>Common</Filter>
26
+    </ClInclude>
27
+    <ClInclude Include="..\Common\util.h">
28
+      <Filter>Common</Filter>
29
+    </ClInclude>
30
+  </ItemGroup>
31
+  <ItemGroup>
32
+    <Image Include="..\Common\Win32\SampleApp.ico">
33
+      <Filter>Common\Win32</Filter>
34
+    </Image>
35
+    <Image Include="..\Common\Win32\small.ico">
36
+      <Filter>Common\Win32</Filter>
37
+    </Image>
38
+  </ItemGroup>
39
+  <ItemGroup>
40
+    <ResourceCompile Include="..\Common\Win32\SampleApp.rc">
41
+      <Filter>Common\Win32</Filter>
42
+    </ResourceCompile>
43
+  </ItemGroup>
44
+  <ItemGroup>
45
+    <ClCompile Include="Texture.cpp">
46
+      <Filter>Source Files</Filter>
47
+    </ClCompile>
48
+    <ClCompile Include="..\Common\dkgl_new.cpp">
49
+      <Filter>Common</Filter>
50
+    </ClCompile>
51
+  </ItemGroup>
52
+</Project>

+ 580
- 0
Samples/Texture/Texture.xcodeproj/project.pbxproj View File

@@ -0,0 +1,580 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 46;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		66DA89941DD3117F00338015 /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 844A9A801DD0C080007DCC89 /* Texture.cpp */; };
11
+		66DA89971DD3118000338015 /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 844A9A801DD0C080007DCC89 /* Texture.cpp */; };
12
+		8406D1D821E715E400E0EA0F /* libDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8406D1BF21E701FF00E0EA0F /* libDK.a */; };
13
+		8406D1F921E71C5500E0EA0F /* libDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8406D1C121E701FF00E0EA0F /* libDK.a */; };
14
+		841948EB1DDCBE6000E039F0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 841948E91DDCBE5000E039F0 /* AppDelegate.m */; };
15
+		841948EF1DDCBE7B00E039F0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 841948ED1DDCBE7500E039F0 /* AppDelegate.m */; };
16
+		8420EE201EE5BA6500A20933 /* Data in Resources */ = {isa = PBXBuildFile; fileRef = 8420EE1F1EE5BA6500A20933 /* Data */; };
17
+		8420EE211EE5BA6500A20933 /* Data in Resources */ = {isa = PBXBuildFile; fileRef = 8420EE1F1EE5BA6500A20933 /* Data */; };
18
+		844A9A851DD0C080007DCC89 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 844A9A781DD0C080007DCC89 /* Assets.xcassets */; };
19
+		844A9A8B1DD0C08F007DCC89 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 844A9A741DD0C080007DCC89 /* Assets.xcassets */; };
20
+		844A9A8D1DD0C08F007DCC89 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 844A9A761DD0C080007DCC89 /* LaunchScreen.storyboard */; };
21
+		84B5FE4E20726C3600B52742 /* dkgl_new.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B5FE4B20726C3600B52742 /* dkgl_new.cpp */; };
22
+		84B5FE4F20726C3600B52742 /* dkgl_new.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B5FE4B20726C3600B52742 /* dkgl_new.cpp */; };
23
+/* End PBXBuildFile section */
24
+
25
+/* Begin PBXContainerItemProxy section */
26
+		8406D1BE21E701FF00E0EA0F /* PBXContainerItemProxy */ = {
27
+			isa = PBXContainerItemProxy;
28
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
29
+			proxyType = 2;
30
+			remoteGlobalIDString = 84E42A5D13AF8B4200BF31EA;
31
+			remoteInfo = DK_iOS_static;
32
+		};
33
+		8406D1C021E701FF00E0EA0F /* PBXContainerItemProxy */ = {
34
+			isa = PBXContainerItemProxy;
35
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
36
+			proxyType = 2;
37
+			remoteGlobalIDString = 84E42A5C13AF8B4200BF31EA;
38
+			remoteInfo = DK_macOS_static;
39
+		};
40
+		8406D1C221E701FF00E0EA0F /* PBXContainerItemProxy */ = {
41
+			isa = PBXContainerItemProxy;
42
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
43
+			proxyType = 2;
44
+			remoteGlobalIDString = 84798B7119E51CBA009378A6;
45
+			remoteInfo = DK_iOS;
46
+		};
47
+		8406D1C421E701FF00E0EA0F /* PBXContainerItemProxy */ = {
48
+			isa = PBXContainerItemProxy;
49
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
50
+			proxyType = 2;
51
+			remoteGlobalIDString = 840CA4ED1928946800689BB6;
52
+			remoteInfo = DK_macOS;
53
+		};
54
+		8406D1D921E715F400E0EA0F /* PBXContainerItemProxy */ = {
55
+			isa = PBXContainerItemProxy;
56
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
57
+			proxyType = 1;
58
+			remoteGlobalIDString = 84C5F9EC13013FDD005F4449;
59
+			remoteInfo = DK_iOS_static;
60
+		};
61
+		8406D1DB21E715FD00E0EA0F /* PBXContainerItemProxy */ = {
62
+			isa = PBXContainerItemProxy;
63
+			containerPortal = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
64
+			proxyType = 1;
65
+			remoteGlobalIDString = D2AAC045055464E500DB518D;
66
+			remoteInfo = DK_macOS_static;
67
+		};
68
+/* End PBXContainerItemProxy section */
69
+
70
+/* Begin PBXFileReference section */
71
+		840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "wrapper.pb-project"; name = DK.xcodeproj; path = ../../DK/DK.xcodeproj; sourceTree = "<group>"; };
72
+		841948E81DDCBE5000E039F0 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
73
+		841948E91DDCBE5000E039F0 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
74
+		841948EC1DDCBE7500E039F0 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
75
+		841948ED1DDCBE7500E039F0 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
76
+		8420EE1F1EE5BA6500A20933 /* Data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Data; path = ../Data; sourceTree = "<group>"; };
77
+		844A9A441DD0BCFD007DCC89 /* Texture_macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Texture_macOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
78
+		844A9A5C1DD0BEDD007DCC89 /* Texture_iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Texture_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
79
+		844A9A741DD0C080007DCC89 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
80
+		844A9A751DD0C080007DCC89 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
81
+		844A9A761DD0C080007DCC89 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
82
+		844A9A781DD0C080007DCC89 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
83
+		844A9A791DD0C080007DCC89 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
84
+		844A9A7B1DD0C080007DCC89 /* Resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Resource.h; sourceTree = "<group>"; };
85
+		844A9A7C1DD0C080007DCC89 /* small.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = small.ico; sourceTree = "<group>"; };
86
+		844A9A7D1DD0C080007DCC89 /* targetver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = targetver.h; sourceTree = "<group>"; };
87
+		844A9A7E1DD0C080007DCC89 /* SampleApp.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = SampleApp.ico; sourceTree = "<group>"; };
88
+		844A9A7F1DD0C080007DCC89 /* SampleApp.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SampleApp.rc; sourceTree = "<group>"; };
89
+		844A9A801DD0C080007DCC89 /* Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Texture.cpp; sourceTree = "<group>"; };
90
+		84B5FE4B20726C3600B52742 /* dkgl_new.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dkgl_new.cpp; sourceTree = "<group>"; };
91
+		84B81E9021E6FF8400E0C5FF /* app.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = app.h; sourceTree = "<group>"; };
92
+		84B81E9121E6FF8400E0C5FF /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
93
+/* End PBXFileReference section */
94
+
95
+/* Begin PBXFrameworksBuildPhase section */
96
+		844A9A411DD0BCFD007DCC89 /* Frameworks */ = {
97
+			isa = PBXFrameworksBuildPhase;
98
+			buildActionMask = 2147483647;
99
+			files = (
100
+				8406D1F921E71C5500E0EA0F /* libDK.a in Frameworks */,
101
+			);
102
+			runOnlyForDeploymentPostprocessing = 0;
103
+		};
104
+		844A9A591DD0BEDD007DCC89 /* Frameworks */ = {
105
+			isa = PBXFrameworksBuildPhase;
106
+			buildActionMask = 2147483647;
107
+			files = (
108
+				8406D1D821E715E400E0EA0F /* libDK.a in Frameworks */,
109
+			);
110
+			runOnlyForDeploymentPostprocessing = 0;
111
+		};
112
+/* End PBXFrameworksBuildPhase section */
113
+
114
+/* Begin PBXGroup section */
115
+		66DA89141DD1887A00338015 /* Frameworks */ = {
116
+			isa = PBXGroup;
117
+			children = (
118
+			);
119
+			name = Frameworks;
120
+			sourceTree = "<group>";
121
+		};
122
+		8406D1B821E701FF00E0EA0F /* Products */ = {
123
+			isa = PBXGroup;
124
+			children = (
125
+				8406D1BF21E701FF00E0EA0F /* libDK.a */,
126
+				8406D1C121E701FF00E0EA0F /* libDK.a */,
127
+				8406D1C321E701FF00E0EA0F /* DK.framework */,
128
+				8406D1C521E701FF00E0EA0F /* DK.framework */,
129
+			);
130
+			name = Products;
131
+			sourceTree = "<group>";
132
+		};
133
+		844A9A3B1DD0BCFD007DCC89 = {
134
+			isa = PBXGroup;
135
+			children = (
136
+				840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */,
137
+				66DA89141DD1887A00338015 /* Frameworks */,
138
+				844A9A451DD0BCFD007DCC89 /* Products */,
139
+				84B81E8F21E6FF4700E0C5FF /* Common */,
140
+				8420EE1F1EE5BA6500A20933 /* Data */,
141
+				844A9A461DD0BCFD007DCC89 /* Source Files */,
142
+			);
143
+			sourceTree = "<group>";
144
+		};
145
+		844A9A451DD0BCFD007DCC89 /* Products */ = {
146
+			isa = PBXGroup;
147
+			children = (
148
+				844A9A441DD0BCFD007DCC89 /* Texture_macOS.app */,
149
+				844A9A5C1DD0BEDD007DCC89 /* Texture_iOS.app */,
150
+			);
151
+			name = Products;
152
+			sourceTree = "<group>";
153
+		};
154
+		844A9A461DD0BCFD007DCC89 /* Source Files */ = {
155
+			isa = PBXGroup;
156
+			children = (
157
+				844A9A801DD0C080007DCC89 /* Texture.cpp */,
158
+			);
159
+			name = "Source Files";
160
+			sourceTree = "<group>";
161
+		};
162
+		844A9A731DD0C080007DCC89 /* iOS */ = {
163
+			isa = PBXGroup;
164
+			children = (
165
+				841948E81DDCBE5000E039F0 /* AppDelegate.h */,
166
+				841948E91DDCBE5000E039F0 /* AppDelegate.m */,
167
+				844A9A741DD0C080007DCC89 /* Assets.xcassets */,
168
+				844A9A751DD0C080007DCC89 /* Info.plist */,
169
+				844A9A761DD0C080007DCC89 /* LaunchScreen.storyboard */,
170
+			);
171
+			path = iOS;
172
+			sourceTree = "<group>";
173
+		};
174
+		844A9A771DD0C080007DCC89 /* macOS */ = {
175
+			isa = PBXGroup;
176
+			children = (
177
+				841948EC1DDCBE7500E039F0 /* AppDelegate.h */,
178
+				841948ED1DDCBE7500E039F0 /* AppDelegate.m */,
179
+				844A9A781DD0C080007DCC89 /* Assets.xcassets */,
180
+				844A9A791DD0C080007DCC89 /* Info.plist */,
181
+			);
182
+			path = macOS;
183
+			sourceTree = "<group>";
184
+		};
185
+		844A9A7A1DD0C080007DCC89 /* Win32 */ = {
186
+			isa = PBXGroup;
187
+			children = (
188
+				844A9A7B1DD0C080007DCC89 /* Resource.h */,
189
+				844A9A7E1DD0C080007DCC89 /* SampleApp.ico */,
190
+				844A9A7F1DD0C080007DCC89 /* SampleApp.rc */,
191
+				844A9A7C1DD0C080007DCC89 /* small.ico */,
192
+				844A9A7D1DD0C080007DCC89 /* targetver.h */,
193
+			);
194
+			path = Win32;
195
+			sourceTree = "<group>";
196
+		};
197
+		84B81E8F21E6FF4700E0C5FF /* Common */ = {
198
+			isa = PBXGroup;
199
+			children = (
200
+				84B5FE4B20726C3600B52742 /* dkgl_new.cpp */,
201
+				84B81E9021E6FF8400E0C5FF /* app.h */,
202
+				84B81E9121E6FF8400E0C5FF /* util.h */,
203
+				844A9A731DD0C080007DCC89 /* iOS */,
204
+				844A9A771DD0C080007DCC89 /* macOS */,
205
+				844A9A7A1DD0C080007DCC89 /* Win32 */,
206
+			);
207
+			name = Common;
208
+			path = ../Common;
209
+			sourceTree = "<group>";
210
+		};
211
+/* End PBXGroup section */
212
+
213
+/* Begin PBXNativeTarget section */
214
+		844A9A431DD0BCFD007DCC89 /* Texture_macOS */ = {
215
+			isa = PBXNativeTarget;
216
+			buildConfigurationList = 844A9A551DD0BCFD007DCC89 /* Build configuration list for PBXNativeTarget "Texture_macOS" */;
217
+			buildPhases = (
218
+				844A9A401DD0BCFD007DCC89 /* Sources */,
219
+				844A9A411DD0BCFD007DCC89 /* Frameworks */,
220
+				844A9A421DD0BCFD007DCC89 /* Resources */,
221
+			);
222
+			buildRules = (
223
+			);
224
+			dependencies = (
225
+				8406D1DC21E715FD00E0EA0F /* PBXTargetDependency */,
226
+			);
227
+			name = Texture_macOS;
228
+			productName = TestApp1;
229
+			productReference = 844A9A441DD0BCFD007DCC89 /* Texture_macOS.app */;
230
+			productType = "com.apple.product-type.application";
231
+		};
232
+		844A9A5B1DD0BEDD007DCC89 /* Texture_iOS */ = {
233
+			isa = PBXNativeTarget;
234
+			buildConfigurationList = 844A9A701DD0BEDD007DCC89 /* Build configuration list for PBXNativeTarget "Texture_iOS" */;
235
+			buildPhases = (
236
+				844A9A581DD0BEDD007DCC89 /* Sources */,
237
+				844A9A591DD0BEDD007DCC89 /* Frameworks */,
238
+				844A9A5A1DD0BEDD007DCC89 /* Resources */,
239
+			);
240
+			buildRules = (
241
+			);
242
+			dependencies = (
243
+				8406D1DA21E715F400E0EA0F /* PBXTargetDependency */,
244
+			);
245
+			name = Texture_iOS;
246
+			productName = TestApp1_iOS;
247
+			productReference = 844A9A5C1DD0BEDD007DCC89 /* Texture_iOS.app */;
248
+			productType = "com.apple.product-type.application";
249
+		};
250
+/* End PBXNativeTarget section */
251
+
252
+/* Begin PBXProject section */
253
+		844A9A3C1DD0BCFD007DCC89 /* Project object */ = {
254
+			isa = PBXProject;
255
+			attributes = {
256
+				LastUpgradeCheck = 0810;
257
+				ORGANIZATIONNAME = icondb;
258
+				TargetAttributes = {
259
+					844A9A431DD0BCFD007DCC89 = {
260
+						CreatedOnToolsVersion = 8.1;
261
+						ProvisioningStyle = Manual;
262
+					};
263
+					844A9A5B1DD0BEDD007DCC89 = {
264
+						CreatedOnToolsVersion = 8.1;
265
+						DevelopmentTeam = F599L375TZ;
266
+						ProvisioningStyle = Automatic;
267
+					};
268
+				};
269
+			};
270
+			buildConfigurationList = 844A9A3F1DD0BCFD007DCC89 /* Build configuration list for PBXProject "Texture" */;
271
+			compatibilityVersion = "Xcode 3.2";
272
+			developmentRegion = English;
273
+			hasScannedForEncodings = 0;
274
+			knownRegions = (
275
+				en,
276
+				Base,
277
+			);
278
+			mainGroup = 844A9A3B1DD0BCFD007DCC89;
279
+			productRefGroup = 844A9A451DD0BCFD007DCC89 /* Products */;
280
+			projectDirPath = "";
281
+			projectReferences = (
282
+				{
283
+					ProductGroup = 8406D1B821E701FF00E0EA0F /* Products */;
284
+					ProjectRef = 840D5D3A1DDA07B2009DA369 /* DK.xcodeproj */;
285
+				},
286
+			);
287
+			projectRoot = "";
288
+			targets = (
289
+				844A9A431DD0BCFD007DCC89 /* Texture_macOS */,
290
+				844A9A5B1DD0BEDD007DCC89 /* Texture_iOS */,
291
+			);
292
+		};
293
+/* End PBXProject section */
294
+
295
+/* Begin PBXReferenceProxy section */
296
+		8406D1BF21E701FF00E0EA0F /* libDK.a */ = {
297
+			isa = PBXReferenceProxy;
298
+			fileType = archive.ar;
299
+			path = libDK.a;
300
+			remoteRef = 8406D1BE21E701FF00E0EA0F /* PBXContainerItemProxy */;
301
+			sourceTree = BUILT_PRODUCTS_DIR;
302
+		};
303
+		8406D1C121E701FF00E0EA0F /* libDK.a */ = {
304
+			isa = PBXReferenceProxy;
305
+			fileType = archive.ar;
306
+			path = libDK.a;
307
+			remoteRef = 8406D1C021E701FF00E0EA0F /* PBXContainerItemProxy */;
308
+			sourceTree = BUILT_PRODUCTS_DIR;
309
+		};
310
+		8406D1C321E701FF00E0EA0F /* DK.framework */ = {
311
+			isa = PBXReferenceProxy;
312
+			fileType = wrapper.framework;
313
+			path = DK.framework;
314
+			remoteRef = 8406D1C221E701FF00E0EA0F /* PBXContainerItemProxy */;
315
+			sourceTree = BUILT_PRODUCTS_DIR;
316
+		};
317
+		8406D1C521E701FF00E0EA0F /* DK.framework */ = {
318
+			isa = PBXReferenceProxy;
319
+			fileType = wrapper.framework;
320
+			path = DK.framework;
321
+			remoteRef = 8406D1C421E701FF00E0EA0F /* PBXContainerItemProxy */;
322
+			sourceTree = BUILT_PRODUCTS_DIR;
323
+		};
324
+/* End PBXReferenceProxy section */
325
+
326
+/* Begin PBXResourcesBuildPhase section */
327
+		844A9A421DD0BCFD007DCC89 /* Resources */ = {
328
+			isa = PBXResourcesBuildPhase;
329
+			buildActionMask = 2147483647;
330
+			files = (
331
+				8420EE201EE5BA6500A20933 /* Data in Resources */,
332
+				844A9A851DD0C080007DCC89 /* Assets.xcassets in Resources */,
333
+			);
334
+			runOnlyForDeploymentPostprocessing = 0;
335
+		};
336
+		844A9A5A1DD0BEDD007DCC89 /* Resources */ = {
337
+			isa = PBXResourcesBuildPhase;
338
+			buildActionMask = 2147483647;
339
+			files = (
340
+				844A9A8D1DD0C08F007DCC89 /* LaunchScreen.storyboard in Resources */,
341
+				844A9A8B1DD0C08F007DCC89 /* Assets.xcassets in Resources */,
342
+				8420EE211EE5BA6500A20933 /* Data in Resources */,
343
+			);
344
+			runOnlyForDeploymentPostprocessing = 0;
345
+		};
346
+/* End PBXResourcesBuildPhase section */
347
+
348
+/* Begin PBXSourcesBuildPhase section */
349
+		844A9A401DD0BCFD007DCC89 /* Sources */ = {
350
+			isa = PBXSourcesBuildPhase;
351
+			buildActionMask = 2147483647;
352
+			files = (
353
+				841948EF1DDCBE7B00E039F0 /* AppDelegate.m in Sources */,
354
+				84B5FE4E20726C3600B52742 /* dkgl_new.cpp in Sources */,
355
+				66DA89941DD3117F00338015 /* Texture.cpp in Sources */,
356
+			);
357
+			runOnlyForDeploymentPostprocessing = 0;
358
+		};
359
+		844A9A581DD0BEDD007DCC89 /* Sources */ = {
360
+			isa = PBXSourcesBuildPhase;
361
+			buildActionMask = 2147483647;
362
+			files = (
363
+				841948EB1DDCBE6000E039F0 /* AppDelegate.m in Sources */,
364
+				84B5FE4F20726C3600B52742 /* dkgl_new.cpp in Sources */,
365
+				66DA89971DD3118000338015 /* Texture.cpp in Sources */,
366
+			);
367
+			runOnlyForDeploymentPostprocessing = 0;
368
+		};
369
+/* End PBXSourcesBuildPhase section */
370
+
371
+/* Begin PBXTargetDependency section */
372
+		8406D1DA21E715F400E0EA0F /* PBXTargetDependency */ = {
373
+			isa = PBXTargetDependency;
374
+			name = DK_iOS_static;
375
+			targetProxy = 8406D1D921E715F400E0EA0F /* PBXContainerItemProxy */;
376
+		};
377
+		8406D1DC21E715FD00E0EA0F /* PBXTargetDependency */ = {
378
+			isa = PBXTargetDependency;
379
+			name = DK_macOS_static;
380
+			targetProxy = 8406D1DB21E715FD00E0EA0F /* PBXContainerItemProxy */;
381
+		};
382
+/* End PBXTargetDependency section */
383
+
384
+/* Begin XCBuildConfiguration section */
385
+		844A9A531DD0BCFD007DCC89 /* Debug */ = {
386
+			isa = XCBuildConfiguration;
387
+			buildSettings = {
388
+				ALWAYS_SEARCH_USER_PATHS = NO;
389
+				CLANG_ANALYZER_NONNULL = YES;
390
+				CLANG_CXX_LANGUAGE_STANDARD = "c++17";
391
+				CLANG_CXX_LIBRARY = "libc++";
392
+				CLANG_ENABLE_MODULES = YES;
393
+				CLANG_ENABLE_OBJC_ARC = YES;
394
+				CLANG_WARN_BOOL_CONVERSION = YES;
395
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
396
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
397
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
398
+				CLANG_WARN_EMPTY_BODY = YES;
399
+				CLANG_WARN_ENUM_CONVERSION = YES;
400
+				CLANG_WARN_INFINITE_RECURSION = YES;
401
+				CLANG_WARN_INT_CONVERSION = YES;
402
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
403
+				CLANG_WARN_SUSPICIOUS_MOVES = YES;
404
+				CLANG_WARN_UNREACHABLE_CODE = YES;
405
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
406
+				CODE_SIGN_IDENTITY = "";
407
+				COPY_PHASE_STRIP = NO;
408
+				DEBUG_INFORMATION_FORMAT = dwarf;
409
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
410
+				ENABLE_TESTABILITY = YES;
411
+				GCC_C_LANGUAGE_STANDARD = gnu99;
412
+				GCC_DYNAMIC_NO_PIC = NO;
413
+				GCC_NO_COMMON_BLOCKS = YES;
414
+				GCC_OPTIMIZATION_LEVEL = 0;
415
+				GCC_PREPROCESSOR_DEFINITIONS = (
416
+					DKGL_STATIC,
417
+					"DEBUG=1",
418
+					"$(inherited)",
419
+				);
420
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
421
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
422
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
423
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
424
+				GCC_WARN_UNUSED_FUNCTION = YES;
425
+				GCC_WARN_UNUSED_VARIABLE = YES;
426
+				HEADER_SEARCH_PATHS = (
427
+					../Common,
428
+					../../DK,
429
+				);
430
+				MTL_ENABLE_DEBUG_INFO = YES;
431
+				ONLY_ACTIVE_ARCH = NO;
432
+				SDKROOT = macosx;
433
+			};
434
+			name = Debug;
435
+		};
436
+		844A9A541DD0BCFD007DCC89 /* Release */ = {
437
+			isa = XCBuildConfiguration;
438
+			buildSettings = {
439
+				ALWAYS_SEARCH_USER_PATHS = NO;
440
+				CLANG_ANALYZER_NONNULL = YES;
441
+				CLANG_CXX_LANGUAGE_STANDARD = "c++17";
442
+				CLANG_CXX_LIBRARY = "libc++";
443
+				CLANG_ENABLE_MODULES = YES;
444
+				CLANG_ENABLE_OBJC_ARC = YES;
445
+				CLANG_WARN_BOOL_CONVERSION = YES;
446
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
447
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
448
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
449
+				CLANG_WARN_EMPTY_BODY = YES;
450
+				CLANG_WARN_ENUM_CONVERSION = YES;
451
+				CLANG_WARN_INFINITE_RECURSION = YES;
452
+				CLANG_WARN_INT_CONVERSION = YES;
453
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
454
+				CLANG_WARN_SUSPICIOUS_MOVES = YES;
455
+				CLANG_WARN_UNREACHABLE_CODE = YES;
456
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
457
+				CODE_SIGN_IDENTITY = "";
458
+				COPY_PHASE_STRIP = NO;
459
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
460
+				ENABLE_NS_ASSERTIONS = NO;
461
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
462
+				GCC_C_LANGUAGE_STANDARD = gnu99;
463
+				GCC_NO_COMMON_BLOCKS = YES;
464
+				GCC_PREPROCESSOR_DEFINITIONS = "DKGL_STATIC=1";
465
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
466
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
467
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
468
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
469
+				GCC_WARN_UNUSED_FUNCTION = YES;
470
+				GCC_WARN_UNUSED_VARIABLE = YES;
471
+				HEADER_SEARCH_PATHS = (
472
+					../Common,
473
+					../../DK,
474
+				);
475
+				MTL_ENABLE_DEBUG_INFO = NO;
476
+				SDKROOT = macosx;
477
+			};
478
+			name = Release;
479
+		};
480
+		844A9A561DD0BCFD007DCC89 /* Debug */ = {
481
+			isa = XCBuildConfiguration;
482
+			buildSettings = {
483
+				ARCHS = "$(ARCHS_STANDARD)";
484
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
485
+				COMBINE_HIDPI_IMAGES = YES;
486
+				INFOPLIST_FILE = "$(SRCROOT)/../Common/macOS/Info.plist";
487
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
488
+				PRODUCT_BUNDLE_IDENTIFIER = "com.palcube.triangle-macos";
489
+				PRODUCT_NAME = "$(TARGET_NAME)";
490
+				SDKROOT = macosx;
491
+			};
492
+			name = Debug;
493
+		};
494
+		844A9A571DD0BCFD007DCC89 /* Release */ = {
495
+			isa = XCBuildConfiguration;
496
+			buildSettings = {
497
+				ARCHS = "$(ARCHS_STANDARD)";
498
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
499
+				COMBINE_HIDPI_IMAGES = YES;
500
+				INFOPLIST_FILE = "$(SRCROOT)/../Common/macOS/Info.plist";
501
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
502
+				PRODUCT_BUNDLE_IDENTIFIER = "com.palcube.triangle-macos";
503
+				PRODUCT_NAME = "$(TARGET_NAME)";
504
+				SDKROOT = macosx;
505
+			};
506
+			name = Release;
507
+		};
508
+		844A9A711DD0BEDD007DCC89 /* Debug */ = {
509
+			isa = XCBuildConfiguration;
510
+			buildSettings = {
511
+				ARCHS = "$(ARCHS_STANDARD)";
512
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
513
+				CODE_SIGN_IDENTITY = "iPhone Developer";
514
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
515
+				CODE_SIGN_STYLE = Automatic;
516
+				DEVELOPMENT_TEAM = F599L375TZ;
517
+				INFOPLIST_FILE = "$(SRCROOT)/../Common/iOS/Info.plist";
518
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
519
+				PRODUCT_BUNDLE_IDENTIFIER = "com.palcube.triangle-iOS";
520
+				PRODUCT_NAME = "$(TARGET_NAME)";
521
+				PROVISIONING_PROFILE_SPECIFIER = "";
522
+				SDKROOT = iphoneos;
523
+				TARGETED_DEVICE_FAMILY = "1,2";
524
+			};
525
+			name = Debug;
526
+		};
527
+		844A9A721DD0BEDD007DCC89 /* Release */ = {
528
+			isa = XCBuildConfiguration;
529
+			buildSettings = {
530
+				ARCHS = "$(ARCHS_STANDARD)";
531
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
532
+				CODE_SIGN_IDENTITY = "iPhone Developer";
533
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
534
+				CODE_SIGN_STYLE = Automatic;
535
+				DEVELOPMENT_TEAM = F599L375TZ;
536
+				INFOPLIST_FILE = "$(SRCROOT)/../Common/iOS/Info.plist";
537
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
538
+				PRODUCT_BUNDLE_IDENTIFIER = "com.palcube.triangle-iOS";
539
+				PRODUCT_NAME = "$(TARGET_NAME)";
540
+				PROVISIONING_PROFILE_SPECIFIER = "";
541
+				SDKROOT = iphoneos;
542
+				TARGETED_DEVICE_FAMILY = "1,2";
543
+				VALIDATE_PRODUCT = YES;
544
+			};
545
+			name = Release;
546
+		};
547
+/* End XCBuildConfiguration section */
548
+
549
+/* Begin XCConfigurationList section */
550
+		844A9A3F1DD0BCFD007DCC89 /* Build configuration list for PBXProject "Texture" */ = {
551
+			isa = XCConfigurationList;
552
+			buildConfigurations = (
553
+				844A9A531DD0BCFD007DCC89 /* Debug */,
554
+				844A9A541DD0BCFD007DCC89 /* Release */,
555
+			);
556
+			defaultConfigurationIsVisible = 0;
557
+			defaultConfigurationName = Release;
558
+		};
559
+		844A9A551DD0BCFD007DCC89 /* Build configuration list for PBXNativeTarget "Texture_macOS" */ = {
560
+			isa = XCConfigurationList;
561
+			buildConfigurations = (
562
+				844A9A561DD0BCFD007DCC89 /* Debug */,
563
+				844A9A571DD0BCFD007DCC89 /* Release */,
564
+			);
565
+			defaultConfigurationIsVisible = 0;
566
+			defaultConfigurationName = Release;
567
+		};
568
+		844A9A701DD0BEDD007DCC89 /* Build configuration list for PBXNativeTarget "Texture_iOS" */ = {
569
+			isa = XCConfigurationList;
570
+			buildConfigurations = (
571
+				844A9A711DD0BEDD007DCC89 /* Debug */,
572
+				844A9A721DD0BEDD007DCC89 /* Release */,
573
+			);
574
+			defaultConfigurationIsVisible = 0;
575
+			defaultConfigurationName = Release;
576
+		};
577
+/* End XCConfigurationList section */
578
+	};
579
+	rootObject = 844A9A3C1DD0BCFD007DCC89 /* Project object */;
580
+}