Browse Source

Sample Working

Not working due to Device Lost
Still finding the problem
Heedong Lee 5 years ago
parent
commit
0baa5cebb4

+ 13
- 3
Samples.sln View File

@@ -1,14 +1,16 @@
1 1
 
2 2
 Microsoft Visual Studio Solution File, Format Version 12.00
3
-# Visual Studio 15
4
-VisualStudioVersion = 15.0.28307.168
3
+# Visual Studio Version 16
4
+VisualStudioVersion = 16.0.28729.10
5 5
 MinimumVisualStudioVersion = 10.0.40219.1
6 6
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Triangle", "Samples\Triangle\Triangle.vcxproj", "{35653A85-73BD-4392-A323-FB5C6DAE6F43}"
7 7
 EndProject
8
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DK_static", "DK\DK_static.vcxproj", "{C7312831-A3F6-4E7D-962B-6786972F0A6A}"
8
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DK_static", "dk\DK_static.vcxproj", "{C7312831-A3F6-4E7D-962B-6786972F0A6A}"
9 9
 EndProject
10 10
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Texture", "Samples\Texture\Texture.vcxproj", "{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}"
11 11
 EndProject
12
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mesh", "Samples\Mesh\Mesh.vcxproj", "{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}"
13
+EndProject
12 14
 Global
13 15
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 16
 		Debug|x64 = Debug|x64
@@ -41,6 +43,14 @@ Global
41 43
 		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x64.Build.0 = Release|x64
42 44
 		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x86.ActiveCfg = Release|Win32
43 45
 		{4E5AF9B5-BE2E-4A64-B3FC-FC1A8351ED11}.Release|x86.Build.0 = Release|Win32
46
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Debug|x64.ActiveCfg = Debug|x64
47
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Debug|x64.Build.0 = Debug|x64
48
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Debug|x86.ActiveCfg = Debug|Win32
49
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Debug|x86.Build.0 = Debug|Win32
50
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Release|x64.ActiveCfg = Release|x64
51
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Release|x64.Build.0 = Release|x64
52
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Release|x86.ActiveCfg = Release|Win32
53
+		{B26FBAF5-AD65-4E87-B0B3-5D7FA63C9228}.Release|x86.Build.0 = Release|Win32
44 54
 	EndGlobalSection
45 55
 	GlobalSection(SolutionProperties) = preSolution
46 56
 		HideSolutionNode = FALSE

+ 2029
- 0
Samples/Common/tiny_obj_loader.h
File diff suppressed because it is too large
View File


+ 3285
- 0
Samples/Data/meshes/Car.obj
File diff suppressed because it is too large
View File


BIN
Samples/Data/meshes/chalet.jpg View File


+ 999894
- 0
Samples/Data/meshes/chalet.obj
File diff suppressed because it is too large
View File


BIN
Samples/Data/meshes/chalet.png View File


+ 13
- 0
Samples/Data/shaders/mesh.frag View File

@@ -0,0 +1,13 @@
1
+#version 450
2
+
3
+layout (binding = 1) uniform sampler2D samplerColor;
4
+
5
+layout (location = 0) in vec3 fragColor;
6
+layout (location = 1) in vec2 fragTexCoord;
7
+
8
+layout (location = 0) out vec4 outFragColor;
9
+
10
+void main() 
11
+{
12
+	outFragColor = texture(samplerColor, fragTexCoord);
13
+}

BIN
Samples/Data/shaders/mesh.frag.spv View File


+ 27
- 0
Samples/Data/shaders/mesh.vert View File

@@ -0,0 +1,27 @@
1
+#version 450
2
+
3
+layout (location = 0) in vec3 inPos;
4
+layout (location = 1) in vec3 inColor;
5
+layout (location = 2) in vec2 inTexCoord;
6
+
7
+layout (binding = 0) uniform UBO 
8
+{
9
+	mat4 projection;
10
+	mat4 model;
11
+	mat4 view;
12
+} ubo;
13
+
14
+layout (location = 0) out vec3 fragColor;
15
+layout (location = 1) out vec2 fragTexCoord;
16
+
17
+out gl_PerVertex 
18
+{
19
+    vec4 gl_Position;   
20
+};
21
+
22
+void main() 
23
+{
24
+	gl_Position = ubo.projection * ubo.view * ubo.model * vec4(inPos, 1.0);
25
+	fragColor = inColor;
26
+	fragTexCoord = inTexCoord;
27
+}

BIN
Samples/Data/shaders/mesh.vert.spv View File


+ 2
- 0
Samples/Libs/tinyobjLoader/tiny_obj_loader.cc View File

@@ -0,0 +1,2 @@
1
+#define TINYOBJLOADER_IMPLEMENTATION
2
+#include "tiny_obj_loader.h"

+ 2029
- 0
Samples/Libs/tinyobjLoader/tiny_obj_loader.h
File diff suppressed because it is too large
View File


+ 395
- 0
Samples/Mesh/Mesh.cpp View File

@@ -0,0 +1,395 @@
1
+#include <cstddef>
2
+#include "app.h"
3
+#include "util.h"
4
+
5
+#define TINYOBJLOADER_IMPLMENTATION
6
+#include "tiny_obj_loader.h"
7
+#include <unordered_map>
8
+
9
+
10
+class SampleObjMesh
11
+{
12
+public:
13
+	struct Vertex
14
+	{
15
+		DKVector3 inPos;
16
+		DKVector3 inColor;
17
+		DKVector2 intexCoord;
18
+
19
+		int Compare(const Vertex& Other) const
20
+		{
21
+
22
+			if ( this == &Other 
23
+				|| inPos == Other.inPos && inColor == Other.inColor && intexCoord == Other.intexCoord)
24
+			{
25
+				return 0;
26
+			}
27
+			else
28
+			{
29
+				return static_cast<int>(this - &Other);
30
+			}
31
+		}
32
+
33
+		bool operator > (const Vertex& Other) const
34
+		{
35
+			return Compare(Other) > 0;
36
+		}
37
+
38
+		bool operator < (const Vertex& Other) const
39
+		{
40
+			return Compare(Other) < 0;
41
+		}
42
+	};
43
+
44
+	SampleObjMesh() 
45
+	{
46
+		vertices.Reserve(100);
47
+		indices.Reserve(100);
48
+	}
49
+
50
+	void LoadFromObjFile(const char* InPath)
51
+	{
52
+		tinyobj::attrib_t attrib;
53
+		std::vector<tinyobj::shape_t> shapes;
54
+		std::vector<tinyobj::material_t> materials;
55
+		std::string err;
56
+		if (!tinyobj::LoadObj(&attrib, &shapes, &materials, &err, InPath)) {
57
+			throw std::runtime_error(err);
58
+		}
59
+		
60
+		DKMap<Vertex, uint32_t> uniqueVertices;
61
+		DKLog("Save to Container");
62
+		for (const auto& shape : shapes)
63
+		{
64
+			for (const auto& index : shape.mesh.indices)
65
+			{
66
+				Vertex vertex = {};
67
+
68
+				vertex.inPos = {
69
+					attrib.vertices[3 * index.vertex_index + 0],
70
+					attrib.vertices[3 * index.vertex_index + 1],
71
+					attrib.vertices[3 * index.vertex_index + 2]
72
+				};
73
+
74
+				if (attrib.texcoords.size())
75
+				{
76
+					vertex.intexCoord = {
77
+					attrib.texcoords[2 * index.texcoord_index + 0],
78
+					1.0f - attrib.texcoords[2 * index.texcoord_index + 1]
79
+					};
80
+				}				
81
+
82
+				vertex.inColor = { 1.0f, 1.0f, 1.0f };
83
+
84
+				if (uniqueVertices.Find(vertex) == nullptr)
85
+				{
86
+					uniqueVertices.Insert(vertex, static_cast<uint32_t>(vertices.Count()));
87
+					vertices.Add(vertex);
88
+				}
89
+
90
+				indices.Add(uniqueVertices.Value(vertex));
91
+			}
92
+		}
93
+	}
94
+
95
+	uint32_t GetVerticesCount() const { 
96
+		return static_cast<uint32_t>(vertices.Count()); };
97
+	uint32_t GetIndicesCount() const { 
98
+		return static_cast<uint32_t>(indices.Count()); };
99
+	const Vertex* GetVerticesData() const { 
100
+		return vertices; }
101
+	const uint32_t* GetIndicesData() const { 
102
+		return indices; }
103
+
104
+private:
105
+	DKArray<Vertex> vertices;
106
+	DKArray<uint32_t> indices;
107
+	DKSpinLock                  MeshLock;
108
+};
109
+
110
+///// Template Spealization for DKString. (for DKMap, DKSet)
111
+//template <> struct DKMapKeyComparator<SampleObjMesh::Vertex>
112
+//{
113
+//	int operator () (const DKStringW& lhs, const DKStringW& rhs) const
114
+//	{
115
+//		return lhs.Compare(rhs);
116
+//	}
117
+//};
118
+
119
+
120
+class MeshDemo : public SampleApp
121
+{
122
+    DKObject<DKWindow> window;
123
+	DKObject<DKThread> renderThread;
124
+	DKAtomicNumber32 runningRenderThread;
125
+	DKObject<SampleObjMesh> SampleMesh;
126
+
127
+public:
128
+	void LoadMesh()
129
+	{
130
+		
131
+		DKLog("Loading Mesh");
132
+		SampleMesh->LoadFromObjFile("..\\Data\\meshes\\car.obj");
133
+	}
134
+
135
+    DKObject<DKTexture> LoadTexture2D(DKCommandQueue* queue, DKData* data)
136
+    {
137
+        DKObject<DKImage> image = DKImage::Create(data);
138
+        if (image)
139
+        {
140
+            DKGraphicsDevice* device = queue->Device();
141
+            DKTextureDescriptor texDesc = {};
142
+            texDesc.textureType = DKTexture::Type2D;
143
+            texDesc.pixelFormat = DKPixelFormat::RGBA8Unorm;
144
+            texDesc.width = image->Width();
145
+            texDesc.height = image->Height();
146
+            texDesc.depth = 1;
147
+            texDesc.mipmapLevels = 1;
148
+            texDesc.sampleCount = 1;
149
+            texDesc.arrayLength = 1;
150
+            texDesc.usage = DKTexture::UsageCopyDestination | DKTexture::UsageSampled;
151
+            DKObject<DKTexture> tex = device->CreateTexture(texDesc);
152
+            if (tex)
153
+            {
154
+                size_t bytesPerPixel = image->BytesPerPixel();
155
+                uint32_t width = image->Width();
156
+                uint32_t height = image->Height();
157
+
158
+                size_t bufferLength = bytesPerPixel * width * height;
159
+                DKObject<DKGpuBuffer> stagingBuffer = device->CreateBuffer(bufferLength, DKGpuBuffer::StorageModeShared, DKCpuCacheModeReadWrite);
160
+                
161
+                memcpy(stagingBuffer->Contents(), image->Contents(), bufferLength);
162
+                stagingBuffer->Flush();
163
+
164
+                DKObject<DKCommandBuffer> cb = queue->CreateCommandBuffer();
165
+                DKObject<DKCopyCommandEncoder> encoder = cb->CreateCopyCommandEncoder();
166
+                encoder->CopyFromBufferToTexture(stagingBuffer,
167
+                                                 { 0, width, height },
168
+                                                 tex,
169
+                                                 { 0,0, 0,0,0 },
170
+                                                 { width,height,1 });
171
+                encoder->EndEncoding();
172
+                cb->Commit();
173
+
174
+                DKLog("Texture created!");
175
+                return tex;
176
+            }
177
+        }
178
+        return nullptr;
179
+    }
180
+	void RenderThread(void)
181
+	{
182
+		DKObject<DKData> vertData = resourcePool.LoadResourceData("shaders/mesh.vert.spv");
183
+		DKObject<DKData> fragData = resourcePool.LoadResourceData("shaders/mesh.frag.spv");
184
+		DKShader vertShader(vertData);
185
+		DKShader fragShader(fragData);
186
+
187
+		DKObject<DKGraphicsDevice> device = DKGraphicsDevice::SharedInstance();
188
+        DKObject<DKCommandQueue> queue = device->CreateCommandQueue(DKCommandQueue::Graphics);
189
+
190
+		// create texture
191
+		DKObject<DKTexture> texture = LoadTexture2D(queue, resourcePool.LoadResourceData("textures/deathstar3.png"));
192
+		// create sampler
193
+		DKSamplerDescriptor samplerDesc = {};
194
+		samplerDesc.magFilter = DKSamplerDescriptor::MinMagFilterLinear;
195
+		samplerDesc.minFilter = DKSamplerDescriptor::MinMagFilterLinear;
196
+		samplerDesc.addressModeU = DKSamplerDescriptor::AddressModeRepeat;
197
+		samplerDesc.addressModeV = DKSamplerDescriptor::AddressModeRepeat;
198
+		samplerDesc.addressModeW = DKSamplerDescriptor::AddressModeRepeat;
199
+		samplerDesc.maxAnisotropy = 16;
200
+		
201
+		DKObject<DKSamplerState> sampler = device->CreateSamplerState(samplerDesc);
202
+
203
+        // create shaders
204
+		DKObject<DKShaderModule> vertShaderModule = device->CreateShaderModule(&vertShader);
205
+		DKObject<DKShaderModule> fragShaderModule = device->CreateShaderModule(&fragShader);
206
+
207
+		DKObject<DKShaderFunction> vertShaderFunction = vertShaderModule->CreateFunction(vertShaderModule->FunctionNames().Value(0));
208
+		DKObject<DKShaderFunction> fragShaderFunction = fragShaderModule->CreateFunction(fragShaderModule->FunctionNames().Value(0));
209
+
210
+		DKObject<DKSwapChain> swapChain = queue->CreateSwapChain(window);
211
+
212
+		DKLog("VertexFunction.VertexAttributes: %d", vertShaderFunction->StageInputAttributes().Count());
213
+		for (int i = 0; i < vertShaderFunction->StageInputAttributes().Count(); ++i)
214
+		{
215
+			const DKShaderAttribute& attr = vertShaderFunction->StageInputAttributes().Value(i);
216
+			DKLog("  --> VertexAttribute[%d]: \"%ls\" (location:%u)", i, (const wchar_t*)attr.name, attr.location);
217
+		}
218
+
219
+	
220
+		uint32_t vertexBufferSize = static_cast<uint32_t>(SampleMesh->GetVerticesCount()) * sizeof(SampleObjMesh::Vertex);
221
+		uint32_t indexBufferSize = SampleMesh->GetIndicesCount() * sizeof(uint32_t);
222
+
223
+		DKObject<DKGpuBuffer> vertexBuffer = device->CreateBuffer(vertexBufferSize, DKGpuBuffer::StorageModeShared, DKCpuCacheModeReadWrite);
224
+		memcpy(vertexBuffer->Contents(), SampleMesh->GetVerticesData(), vertexBufferSize);
225
+        vertexBuffer->Flush();
226
+
227
+		DKObject<DKGpuBuffer> indexBuffer = device->CreateBuffer(indexBufferSize, DKGpuBuffer::StorageModeShared, DKCpuCacheModeReadWrite);
228
+		memcpy(indexBuffer->Contents(), SampleMesh->GetIndicesData(), indexBufferSize);
229
+        indexBuffer->Flush();
230
+
231
+		DKRenderPipelineDescriptor pipelineDescriptor;
232
+		pipelineDescriptor.vertexFunction = vertShaderFunction;
233
+		pipelineDescriptor.fragmentFunction = fragShaderFunction;
234
+		pipelineDescriptor.colorAttachments.Resize(1);
235
+		pipelineDescriptor.colorAttachments.Value(0).pixelFormat = swapChain->ColorPixelFormat();
236
+        pipelineDescriptor.colorAttachments.Value(0).blendingEnabled = true;
237
+        pipelineDescriptor.colorAttachments.Value(0).sourceRGBBlendFactor = DKBlendFactor::SourceAlpha;
238
+        pipelineDescriptor.colorAttachments.Value(0).destinationRGBBlendFactor = DKBlendFactor::OneMinusSourceAlpha;
239
+		pipelineDescriptor.depthStencilAttachmentPixelFormat = DKPixelFormat::Invalid; // no depth buffer
240
+		pipelineDescriptor.vertexDescriptor.attributes = {
241
+			{ DKVertexFormat::Float3, offsetof(SampleObjMesh::Vertex, inPos), 0, 0 },
242
+            { DKVertexFormat::Float3, offsetof(SampleObjMesh::Vertex, inColor), 0, 1 },
243
+			{ DKVertexFormat::Float2, offsetof(SampleObjMesh::Vertex, intexCoord), 0, 2 },
244
+		};
245
+		pipelineDescriptor.vertexDescriptor.layouts = {
246
+			{ DKVertexStepRate::Vertex, sizeof(SampleObjMesh::Vertex), 0 },
247
+		};
248
+		pipelineDescriptor.primitiveTopology = DKPrimitiveType::Triangle;
249
+		pipelineDescriptor.frontFace = DKFrontFace::CCW;
250
+		pipelineDescriptor.triangleFillMode = DKTriangleFillMode::Fill;
251
+		pipelineDescriptor.depthClipMode = DKDepthClipMode::Clip;
252
+		pipelineDescriptor.cullMode = DKCullMode::None;
253
+		pipelineDescriptor.rasterizationEnabled = true;
254
+
255
+		DKPipelineReflection reflection;
256
+		DKObject<DKRenderPipelineState> pipelineState = device->CreateRenderPipeline(pipelineDescriptor, &reflection);
257
+		if (pipelineState)
258
+		{
259
+            PrintPipelineReflection(&reflection, DKLogCategory::Verbose);
260
+		}
261
+
262
+        DKShaderBindingSetLayout layout;
263
+        if (1)
264
+        {
265
+            DKShaderBinding bindings[2] = {
266
+                {
267
+                    0,
268
+                    DKShader::DescriptorTypeUniformBuffer,
269
+                    1,
270
+                    nullptr
271
+                },
272
+                {
273
+                    1,
274
+                    DKShader::DescriptorTypeTextureSampler,
275
+                    1,
276
+                    nullptr
277
+                },
278
+            };
279
+            layout.bindings.Add(bindings, 2);
280
+        }
281
+        DKObject<DKShaderBindingSet> bindSet = device->CreateShaderBindingSet(layout);
282
+        if (bindSet)
283
+        {
284
+            struct
285
+            {
286
+                DKMatrix4 projectionMatrix;
287
+                DKMatrix4 modelMatrix;
288
+                DKMatrix4 viewMatrix;
289
+            } ubo;
290
+
291
+            DKObject<DKGpuBuffer> uboBuffer = device->CreateBuffer(sizeof(ubo), DKGpuBuffer::StorageModeShared, DKCpuCacheModeReadWrite);
292
+            if (uboBuffer)
293
+            {
294
+                ubo.projectionMatrix = DKMatrix4::identity;
295
+                ubo.modelMatrix = DKMatrix4::identity;
296
+                ubo.viewMatrix = DKMatrix4::identity;
297
+
298
+                memcpy(uboBuffer->Contents(), &ubo, sizeof(ubo));
299
+                bindSet->SetBuffer(0, uboBuffer, 0, sizeof(ubo));
300
+                uboBuffer->Flush();
301
+            }
302
+			         
303
+
304
+            bindSet->SetTexture(1, texture);
305
+            bindSet->SetSamplerState(1, sampler);
306
+        }
307
+
308
+		DKTimer timer;
309
+		timer.Reset();
310
+
311
+		DKLog("Render thread begin");
312
+		while (!runningRenderThread.CompareAndSet(0, 0))
313
+		{
314
+			DKRenderPassDescriptor rpd = swapChain->CurrentRenderPassDescriptor();
315
+			double t = timer.Elapsed();
316
+			t = (cos(t) + 1.0) * 0.5;
317
+			rpd.colorAttachments.Value(0).clearColor = DKColor(t, 0.0, 0.0, 0.0);
318
+
319
+			DKObject<DKCommandBuffer> buffer = queue->CreateCommandBuffer();
320
+			DKObject<DKRenderCommandEncoder> encoder = buffer->CreateRenderCommandEncoder(rpd);
321
+			if (encoder)
322
+			{
323
+				encoder->SetRenderPipelineState(pipelineState);
324
+				encoder->SetVertexBuffer(vertexBuffer, 0, 0);
325
+				encoder->SetIndexBuffer(indexBuffer, 0, DKIndexType::UInt32);
326
+                encoder->SetResources(0, bindSet);
327
+				// draw scene!
328
+				encoder->DrawIndexed(SampleMesh->GetIndicesCount(), 1, 0, 0, 0);
329
+				encoder->EndEncoding();
330
+				buffer->Commit();
331
+				swapChain->Present();
332
+			}
333
+			else
334
+			{
335
+			}
336
+			DKThread::Sleep(0.5);
337
+		}
338
+		DKLog("RenderThread terminating...");
339
+	}
340
+
341
+	void OnInitialize(void) override
342
+	{
343
+        SampleApp::OnInitialize();
344
+		DKLogD("%s", DKGL_FUNCTION_NAME);
345
+
346
+        // create window
347
+        window = DKWindow::Create("DefaultWindow");
348
+        window->SetOrigin({ 0, 0 });
349
+        window->Resize({ 320, 240 });
350
+        window->Activate();
351
+
352
+        window->AddEventHandler(this, DKFunction([this](const DKWindow::WindowEvent& e)
353
+        {
354
+            if (e.type == DKWindow::WindowEvent::WindowClosed)
355
+                DKApplication::Instance()->Terminate(0);
356
+        }), NULL, NULL);
357
+
358
+		if (SampleMesh == nullptr)
359
+		{
360
+			SampleMesh = new SampleObjMesh;
361
+		}
362
+
363
+		LoadMesh();
364
+
365
+		runningRenderThread = 1;
366
+		renderThread = DKThread::Create(DKFunction(this, &MeshDemo::RenderThread)->Invocation());
367
+	}
368
+	void OnTerminate(void) override
369
+	{
370
+		DKLogD("%s", DKGL_FUNCTION_NAME);
371
+
372
+		runningRenderThread = 0;
373
+		renderThread->WaitTerminate();
374
+		renderThread = NULL;
375
+        window = NULL;
376
+
377
+        SampleApp::OnTerminate();
378
+	}
379
+};
380
+
381
+
382
+#ifdef _WIN32
383
+int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
384
+					  _In_opt_ HINSTANCE hPrevInstance,
385
+					  _In_ LPWSTR    lpCmdLine,
386
+					  _In_ int       nCmdShow)
387
+#else
388
+int main(int argc, const char * argv[])
389
+#endif
390
+{
391
+    MeshDemo app;
392
+	DKPropertySet::SystemConfig().SetValue("AppDelegate", "AppDelegate");
393
+	DKPropertySet::SystemConfig().SetValue("GraphicsAPI", "Vulkan");
394
+	return app.Run();
395
+}

+ 197
- 0
Samples/Mesh/Mesh.vcxproj View File

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

+ 61
- 0
Samples/Mesh/Mesh.vcxproj.filters View File

@@ -0,0 +1,61 @@
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
+    <Filter Include="Libs">
14
+      <UniqueIdentifier>{3ce1a1e3-391f-40d9-97b3-2d6763792f5f}</UniqueIdentifier>
15
+    </Filter>
16
+  </ItemGroup>
17
+  <ItemGroup>
18
+    <ClInclude Include="..\Common\Win32\Resource.h">
19
+      <Filter>Common\Win32</Filter>
20
+    </ClInclude>
21
+    <ClInclude Include="..\Common\Win32\stdafx.h">
22
+      <Filter>Common\Win32</Filter>
23
+    </ClInclude>
24
+    <ClInclude Include="..\Common\Win32\targetver.h">
25
+      <Filter>Common\Win32</Filter>
26
+    </ClInclude>
27
+    <ClInclude Include="..\Common\app.h">
28
+      <Filter>Common</Filter>
29
+    </ClInclude>
30
+    <ClInclude Include="..\Common\util.h">
31
+      <Filter>Common</Filter>
32
+    </ClInclude>
33
+    <ClInclude Include="..\Libs\tinyobjLoader\tiny_obj_loader.h">
34
+      <Filter>Libs</Filter>
35
+    </ClInclude>
36
+  </ItemGroup>
37
+  <ItemGroup>
38
+    <Image Include="..\Common\Win32\SampleApp.ico">
39
+      <Filter>Common\Win32</Filter>
40
+    </Image>
41
+    <Image Include="..\Common\Win32\small.ico">
42
+      <Filter>Common\Win32</Filter>
43
+    </Image>
44
+  </ItemGroup>
45
+  <ItemGroup>
46
+    <ResourceCompile Include="..\Common\Win32\SampleApp.rc">
47
+      <Filter>Common\Win32</Filter>
48
+    </ResourceCompile>
49
+  </ItemGroup>
50
+  <ItemGroup>
51
+    <ClCompile Include="..\Common\dkgl_new.cpp">
52
+      <Filter>Common</Filter>
53
+    </ClCompile>
54
+    <ClCompile Include="Mesh.cpp">
55
+      <Filter>Source Files</Filter>
56
+    </ClCompile>
57
+    <ClCompile Include="..\Libs\tinyobjLoader\tiny_obj_loader.cc">
58
+      <Filter>Libs</Filter>
59
+    </ClCompile>
60
+  </ItemGroup>
61
+</Project>

+ 580
- 0
Samples/Mesh/Mesh.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
+}

+ 3
- 3
Samples/Texture/Texture.cpp View File

@@ -3,7 +3,7 @@
3 3
 #include "util.h"
4 4
 
5 5
 
6
-class TextureDemo : public SampleApp
6
+class MeshDemo : public SampleApp
7 7
 {
8 8
     DKObject<DKWindow> window;
9 9
 	DKObject<DKThread> renderThread;
@@ -239,7 +239,7 @@ public:
239 239
         }), NULL, NULL);
240 240
 
241 241
 		runningRenderThread = 1;
242
-		renderThread = DKThread::Create(DKFunction(this, &TextureDemo::RenderThread)->Invocation());
242
+		renderThread = DKThread::Create(DKFunction(this, &MeshDemo::RenderThread)->Invocation());
243 243
 	}
244 244
 	void OnTerminate(void) override
245 245
 	{
@@ -264,7 +264,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
264 264
 int main(int argc, const char * argv[])
265 265
 #endif
266 266
 {
267
-    TextureDemo app;
267
+    MeshDemo app;
268 268
 	DKPropertySet::SystemConfig().SetValue("AppDelegate", "AppDelegate");
269 269
 	DKPropertySet::SystemConfig().SetValue("GraphicsAPI", "Vulkan");
270 270
 	return app.Run();