Add support for iOS and macOS via MoltenVK.
|
|
@ -107,6 +107,9 @@ public:
|
|||
#ifdef __ANDROID__
|
||||
ANativeWindow* window
|
||||
#else
|
||||
#if (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
void* view
|
||||
#else
|
||||
#ifdef _DIRECT2DISPLAY
|
||||
uint32_t width, uint32_t height
|
||||
#else
|
||||
|
|
@ -117,6 +120,7 @@ public:
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
)
|
||||
{
|
||||
|
|
@ -136,6 +140,22 @@ public:
|
|||
surfaceCreateInfo.window = window;
|
||||
err = vkCreateAndroidSurfaceKHR(instance, &surfaceCreateInfo, NULL, &surface);
|
||||
#else
|
||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||
VkIOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
|
||||
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
|
||||
surfaceCreateInfo.pNext = NULL;
|
||||
surfaceCreateInfo.flags = 0;
|
||||
surfaceCreateInfo.pView = view;
|
||||
err = vkCreateIOSSurfaceMVK(instance, &surfaceCreateInfo, nullptr, &surface);
|
||||
#else
|
||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||
VkMacOSSurfaceCreateInfoMVK surfaceCreateInfo = {};
|
||||
surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
|
||||
surfaceCreateInfo.pNext = NULL;
|
||||
surfaceCreateInfo.flags = 0;
|
||||
surfaceCreateInfo.pView = view;
|
||||
err = vkCreateMacOSSurfaceMVK(instance, &surfaceCreateInfo, NULL, &surface);
|
||||
#else
|
||||
#if defined(_DIRECT2DISPLAY)
|
||||
createDirect2DisplaySurface(width, height);
|
||||
#else
|
||||
|
|
@ -154,6 +174,8 @@ public:
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Get available queue family properties
|
||||
|
|
|
|||
|
|
@ -52,6 +52,28 @@
|
|||
#define KEY_N 0xE
|
||||
#define KEY_O 0xF
|
||||
#define KEY_T 0x10
|
||||
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
#define KEY_ESCAPE 0x35
|
||||
#define KEY_F1 0x7A
|
||||
#define KEY_F2 0x78
|
||||
#define KEY_F3 0x63
|
||||
#define KEY_F4 0x76
|
||||
#define KEY_W 0x0D
|
||||
#define KEY_A 0x00
|
||||
#define KEY_S 0x01
|
||||
#define KEY_D 0x02
|
||||
#define KEY_P 0x23
|
||||
#define KEY_SPACE 0x31
|
||||
#define KEY_KPADD 0x45
|
||||
#define KEY_KPSUB 0x4E
|
||||
#define KEY_B 0x0B
|
||||
#define KEY_F 0x03
|
||||
#define KEY_L 0x25
|
||||
#define KEY_N 0x2D
|
||||
#define KEY_O 0x1F
|
||||
#define KEY_T 0x11
|
||||
|
||||
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
|
||||
#include <linux/input.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ std::string VulkanExampleBase::getWindowTitle()
|
|||
return windowTitle;
|
||||
}
|
||||
|
||||
#if !(defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
// iOS & macOS: VulkanExampleBase::getAssetPath() implemented externally to allow access to Objective-C components
|
||||
const std::string VulkanExampleBase::getAssetPath()
|
||||
{
|
||||
#if defined(__ANDROID__)
|
||||
|
|
@ -76,6 +78,7 @@ const std::string VulkanExampleBase::getAssetPath()
|
|||
return "./../data/";
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
bool VulkanExampleBase::checkCommandBuffers()
|
||||
{
|
||||
|
|
@ -210,6 +213,45 @@ VkPipelineShaderStageCreateInfo VulkanExampleBase::loadShader(std::string fileNa
|
|||
return shaderStage;
|
||||
}
|
||||
|
||||
void VulkanExampleBase::renderFrame()
|
||||
{
|
||||
#if (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
auto tStart = std::chrono::high_resolution_clock::now();
|
||||
if (viewUpdated)
|
||||
{
|
||||
viewUpdated = false;
|
||||
viewChanged();
|
||||
}
|
||||
render();
|
||||
frameCounter++;
|
||||
auto tEnd = std::chrono::high_resolution_clock::now();
|
||||
auto tDiff = std::chrono::duration<double, std::milli>(tEnd - tStart).count();
|
||||
frameTimer = tDiff / 1000.0f;
|
||||
camera.update(frameTimer);
|
||||
if (camera.moving())
|
||||
{
|
||||
viewUpdated = true;
|
||||
}
|
||||
// Convert to clamped timer value
|
||||
if (!paused)
|
||||
{
|
||||
timer += timerSpeed * frameTimer;
|
||||
if (timer > 1.0)
|
||||
{
|
||||
timer -= 1.0f;
|
||||
}
|
||||
}
|
||||
fpsTimer += (float)tDiff;
|
||||
if (fpsTimer > 1000.0f)
|
||||
{
|
||||
lastFPS = frameCounter;
|
||||
updateTextOverlay();
|
||||
fpsTimer = 0.0f;
|
||||
frameCounter = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void VulkanExampleBase::renderLoop()
|
||||
{
|
||||
destWidth = width;
|
||||
|
|
@ -1321,6 +1363,12 @@ void VulkanExampleBase::handleAppCommand(android_app * app, int32_t cmd)
|
|||
break;
|
||||
}
|
||||
}
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
void* VulkanExampleBase::setupWindow(void* view)
|
||||
{
|
||||
this->view = view;
|
||||
return view;
|
||||
}
|
||||
#elif defined(_DIRECT2DISPLAY)
|
||||
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
|
||||
/*static*/void VulkanExampleBase::registryGlobalCb(void *data,
|
||||
|
|
@ -2094,6 +2142,8 @@ void VulkanExampleBase::initSwapchain()
|
|||
swapChain.initSurface(windowInstance, window);
|
||||
#elif defined(__ANDROID__)
|
||||
swapChain.initSurface(androidApp->window);
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
swapChain.initSurface(view);
|
||||
#elif defined(_DIRECT2DISPLAY)
|
||||
swapChain.initSurface(width, height);
|
||||
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
|
||||
|
|
|
|||
|
|
@ -207,6 +207,8 @@ public:
|
|||
int64_t lastTapTime = 0;
|
||||
/** @brief Product model and manufacturer of the Android device (via android.Product*) */
|
||||
std::string androidProduct;
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
void* view;
|
||||
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
|
||||
wl_display *display = nullptr;
|
||||
wl_registry *registry = nullptr;
|
||||
|
|
@ -252,6 +254,8 @@ public:
|
|||
#elif defined(__ANDROID__)
|
||||
static int32_t handleAppInput(struct android_app* app, AInputEvent* event);
|
||||
static void handleAppCommand(android_app* app, int32_t cmd);
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
void* setupWindow(void* view);
|
||||
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
|
||||
wl_shell_surface *setupWindow();
|
||||
void initWaylandConnection();
|
||||
|
|
@ -293,7 +297,6 @@ public:
|
|||
static void keyboardModifiersCb(void *data, struct wl_keyboard *keyboard,
|
||||
uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched,
|
||||
uint32_t mods_locked, uint32_t group);
|
||||
|
||||
#elif defined(__linux__)
|
||||
xcb_window_t setupWindow();
|
||||
void initxcbConnection();
|
||||
|
|
@ -369,6 +372,9 @@ public:
|
|||
// Start the main render loop
|
||||
void renderLoop();
|
||||
|
||||
// Render one frame of a render loop on platforms that sync rendering
|
||||
void renderFrame();
|
||||
|
||||
void updateTextOverlay();
|
||||
|
||||
// Called when the text overlay is updating
|
||||
|
|
@ -484,4 +490,6 @@ int main(const int argc, const char *argv[]) \
|
|||
delete(vulkanExample); \
|
||||
return 0; \
|
||||
}
|
||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||
#define VULKAN_EXAMPLE_MAIN()
|
||||
#endif
|
||||
|
|
|
|||
BIN
libs/assimp/ios/libassimp.a
Normal file
BIN
libs/assimp/ios/libzlibstatic.a
Normal file
BIN
libs/assimp/macos/libassimp.dylib
Executable file
1
xcode/MoltenVK
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../../../../../Molten/Package/Latest/MoltenVK
|
||||
64
xcode/README_MoltenVK_Examples.md
Executable file
|
|
@ -0,0 +1,64 @@
|
|||
<a class="site-logo" href="https://www.moltengl.com/moltenvk/" title="MoltenVK">
|
||||
<img src="images/MoltenVK-Logo-Banner.png" alt="MoltenVK Home" style="width:256px;height:auto">
|
||||
</a>
|
||||
|
||||
#MoltenVK Vulkan Examples
|
||||
|
||||
Copyright (c) 2014-2017 [The Brenwill Workshop Ltd.](http://www.brenwill.com) All rights reserved.
|
||||
|
||||
*This document is written in [Markdown](http://en.wikipedia.org/wiki/Markdown) format.
|
||||
For best results, use a Markdown reader.*
|
||||
|
||||
|
||||
<a name="intro"></a>
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
The *Xcode* project in this folder builds and runs the *Vulkan* examples in this
|
||||
repository on *iOS* and *macOS*, using the **MoltenVK** *Vulkan* driver.
|
||||
|
||||
|
||||
|
||||
<a name="installing-moltenvk"></a>
|
||||
|
||||
Installing MoltenVK
|
||||
-------------------
|
||||
|
||||
The examples in this repository can be run on *iOS* and *macOS* by using
|
||||
the [**MoltenVK**](http://www.moltengl.com/moltenvk/) *Vulkan* driver.
|
||||
Follow these instructions to install **MoltenVK**:
|
||||
|
||||
1. [Download](https://moltengl.com/free-trial/) the **Molten** free evaluation trial.
|
||||
This free trial includes **MoltenVK**, is full-featured, and is not time-limited.
|
||||
You must purchase a license if you wish to use **MoltenVK** for a production
|
||||
application or game, but you can use the evaluation version to run these examples.
|
||||
|
||||
2. Unzip the **Molten** package, and move it to a folder outside this repository.
|
||||
|
||||
3. Open a *Terminal* session and navigate to the directory containing this document,
|
||||
remove the existing `MoltenVK` symbolic link in this directory, and create a new
|
||||
symbolic link pointing to the `MoltenVK` directory in the **Molten** package:
|
||||
|
||||
cd path-to-this-directory
|
||||
rm MoltenVK
|
||||
ln -s path-to-Molten-package/MoltenVK
|
||||
|
||||
|
||||
<a name="running-examples"></a>
|
||||
|
||||
Running the Vulkan Examples
|
||||
---------------------------
|
||||
|
||||
The single `examples.xcodeproj` *Xcode* project can be used to run any of the examples
|
||||
in this repository on either *iOS* or *macOS*. To do so, follow these instructions:
|
||||
|
||||
1. Open the `examples.xcodeproj` *Xcode* project.
|
||||
|
||||
2. Specify which of the many examples within this respository you wish to run, by opening
|
||||
the `examples.h` file within *Xcode*, and following the instructions in the comments
|
||||
within that file to indicate which of the examples you wish to run.
|
||||
|
||||
3. Run either the `examples-iOS` or `examples-macOS` *Xcode Scheme* to run the example in *iOS*
|
||||
or *macOS*, repectively.
|
||||
|
||||
180
xcode/examples.h
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
/*
|
||||
* examples.h
|
||||
*
|
||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
||||
* http://www.brenwill.com
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Loads the appropriate example code, as indicated by the appropriate compiler build setting below.
|
||||
*
|
||||
* To select an example to run, define one (and only one) of the macros below, either by
|
||||
* adding a #define XXX statement at the top of this file, or more flexibily, by adding the
|
||||
* macro value to the Preprocessor Macros (aka GCC_PREPROCESSOR_DEFINITIONS) compiler setting.
|
||||
*
|
||||
* To add a compiler setting, select the project in the Xcode Project Navigator panel,
|
||||
* select the Build Settings panel, and add the value to the Preprocessor Macros
|
||||
* (aka GCC_PREPROCESSOR_DEFINITIONS) entry.
|
||||
*
|
||||
* For example, to run the pipelines example, you would add the MVK_pipelines define macro
|
||||
* to the Preprocessor Macros (aka GCC_PREPROCESSOR_DEFINITIONS) entry of the Xcode project,
|
||||
* overwriting any other value there.
|
||||
*
|
||||
* If you choose to add a #define statement to this file, be sure to clear the existing macro
|
||||
* from the Preprocessor Macros (aka GCC_PREPROCESSOR_DEFINITIONS) compiler setting in Xcode.
|
||||
*/
|
||||
|
||||
|
||||
// In the list below, the comments indicate entries that do not currently run correctly,
|
||||
// and the comment indicates the problem that is encountered when run. Fixes are on the way.
|
||||
|
||||
|
||||
// BASICS
|
||||
|
||||
#ifdef MVK_pipelines
|
||||
# include "../pipelines/pipelines.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_texture // inverse() function not available in MSL
|
||||
# include "../texture/texture.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_texturecubemap // mat4 passed as input
|
||||
# include "../texturecubemap/texturecubemap.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_texturearray // Buffer binding error
|
||||
# include "../texturearray/texturearray.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_mesh
|
||||
# include "../mesh/mesh.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_dynamicuniformbuffer // Bad sampler state
|
||||
# include "../dynamicuniformbuffer/dynamicuniformbuffer.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_pushconstants // Array in shader stage_in breaks shader
|
||||
# include "../pushconstants/pushconstants.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_specializationconstants // Specialization constants not recognized in shader
|
||||
# include "../specializationconstants/specializationconstants.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_offscreen
|
||||
# include "../offscreen/offscreen.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_radialblur // Runs but textureSize() function not available in MSL
|
||||
# include "../radialblur/radialblur.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_textoverlay // inverse() function not available in MSL
|
||||
# include "../textoverlay/textoverlay.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_particlefire // Runs but inversesqrt() function not available in MSL
|
||||
# include "../particlefire/particlefire.cpp"
|
||||
#endif
|
||||
|
||||
|
||||
// ADVANCED
|
||||
|
||||
#ifdef MVK_multithreading
|
||||
# include "../multithreading/multithreading.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_scenerendering
|
||||
# include "../scenerendering/scenerendering.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_instancing // inverse() function not available in MSL
|
||||
# include "../instancing/instancing.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_indirectdraw
|
||||
# include "../indirectdraw/indirectdraw.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_hdr // mat4 passed as input
|
||||
# include "../hdr/hdr.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_occlusionquery // Runs but exhausts 4096 capacity dynamic buffer
|
||||
# include "../occlusionquery/occlusionquery.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_texturemipmapgen // inverse() function not available in MSL + SPIRV->MSL conversion error
|
||||
# include "../texturemipmapgen/texturemipmapgen.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_multisampling
|
||||
# include "../multisampling/multisampling.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_shadowmapping // textureSize() function not available in MSL
|
||||
# include "../shadowmapping/shadowmapping.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_shadowmappingomni
|
||||
# include "../shadowmappingomni/shadowmappingomni.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_skeletalanimation // inverse() function not available in MSL
|
||||
# include "../skeletalanimation/skeletalanimation.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_bloom // Runs but textureSize() function not available in MSL
|
||||
# include "../bloom/bloom.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_deferred // inverse() function not available in MSL
|
||||
# include "../deferred/deferred.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_deferredshadows // Geometry shaders not available in Metal
|
||||
# include "../deferredshadows/deferredshadows.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_ssao // SPIRV->MSL conversion error
|
||||
# include "../ssao/ssao.cpp"
|
||||
#endif
|
||||
|
||||
|
||||
// COMPUTE - Currently unsupported by MoltenVK
|
||||
|
||||
|
||||
// TESSELLATION - Currently unsupported by MoltenVK
|
||||
|
||||
|
||||
// GEOMETRY SHADER - Unsupported by Metal
|
||||
|
||||
|
||||
// EXTENSIONS - Currently unsupported by MoltenVK
|
||||
|
||||
|
||||
// MISC
|
||||
|
||||
#ifdef MVK_parallaxmapping
|
||||
# include "../parallaxmapping/parallaxmapping.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_sphericalenvmapping
|
||||
# include "../sphericalenvmapping/sphericalenvmapping.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_gears
|
||||
# include "../gears/gears.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_distancefieldfonts
|
||||
# include "../distancefieldfonts/distancefieldfonts.cpp"
|
||||
#endif
|
||||
|
||||
#ifdef MVK_vulkanscene
|
||||
# include "../vulkanscene/vulkanscene.cpp"
|
||||
#endif
|
||||
|
||||
604
xcode/examples.xcodeproj/project.pbxproj
Normal file
|
|
@ -0,0 +1,604 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
A91227C31E9D5F5100108018 /* libMoltenVK.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A91227C21E9D5F5100108018 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
A91227C41E9D5F8200108018 /* libMoltenVK.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A91227C21E9D5F5100108018 /* libMoltenVK.dylib */; };
|
||||
A91227C71E9D5FE500108018 /* libassimp.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A91227C61E9D5FE500108018 /* libassimp.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
A91227C81E9D601900108018 /* libassimp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A91227C61E9D5FE500108018 /* libassimp.dylib */; };
|
||||
A945BCFC1E9D4E8700BA3EE2 /* MoltenVK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */; };
|
||||
A94C8D601EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
||||
A94C8D611EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
||||
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF071E9C349000FA9144 /* VulkanDebug.cpp */; };
|
||||
A951FF181E9C349000FA9144 /* VulkanDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF071E9C349000FA9144 /* VulkanDebug.cpp */; };
|
||||
A951FF191E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */; };
|
||||
A951FF1A1E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */; };
|
||||
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
||||
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
||||
A951FF271E9C891A00FA9144 /* libassimp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A951FF261E9C891A00FA9144 /* libassimp.a */; };
|
||||
A98703D71E9D33990066959C /* libzlibstatic.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A98703D61E9D33990066959C /* libzlibstatic.a */; };
|
||||
A98703D91E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
||||
A98703DA1E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
||||
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
|
||||
A9B67B7A1C3AAE9800373FFD /* DemoViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6F1C3AAE9800373FFD /* DemoViewController.mm */; };
|
||||
A9B67B7C1C3AAE9800373FFD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B711C3AAE9800373FFD /* main.m */; };
|
||||
A9B67B7D1C3AAE9800373FFD /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */; };
|
||||
A9B67B7E1C3AAE9800373FFD /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B751C3AAE9800373FFD /* Default~ipad.png */; };
|
||||
A9B67B7F1C3AAE9800373FFD /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B761C3AAE9800373FFD /* Icon.png */; };
|
||||
A9B67B801C3AAE9800373FFD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B771C3AAE9800373FFD /* Main.storyboard */; };
|
||||
A9B67B8C1C3AAEA200373FFD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B831C3AAEA200373FFD /* AppDelegate.m */; };
|
||||
A9B67B8D1C3AAEA200373FFD /* DemoViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B851C3AAEA200373FFD /* DemoViewController.mm */; };
|
||||
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B871C3AAEA200373FFD /* main.m */; };
|
||||
A9B67B901C3AAEA200373FFD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8A1C3AAEA200373FFD /* Main.storyboard */; };
|
||||
A9B67B911C3AAEA200373FFD /* macOS.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
A91227BB1E9D5E9D00108018 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 6;
|
||||
files = (
|
||||
A91227C71E9D5FE500108018 /* libassimp.dylib in CopyFiles */,
|
||||
A91227C31E9D5F5100108018 /* libMoltenVK.dylib in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
1D6058910D05DD3D006BFB54 /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2D500B990D5A79CF00DBA0E3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
A91227C21E9D5F5100108018 /* libMoltenVK.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libMoltenVK.dylib; path = MoltenVK/macOS/libMoltenVK.dylib; sourceTree = "<group>"; };
|
||||
A91227C61E9D5FE500108018 /* libassimp.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libassimp.dylib; path = ../libs/assimp/macos/libassimp.dylib; sourceTree = "<group>"; };
|
||||
A92F37071C7E1B2B008F8BC9 /* examples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examples.h; sourceTree = "<group>"; };
|
||||
A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MoltenVK.framework; path = MoltenVK/iOS/MoltenVK.framework; sourceTree = "<group>"; };
|
||||
A94A67231B7BDE9B00F6D7C4 /* MetalGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGL.framework; path = ../../MetalGL/macOS/MetalGL.framework; sourceTree = "<group>"; };
|
||||
A94A67241B7BDE9B00F6D7C4 /* MetalGLShaderConverter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGLShaderConverter.framework; path = ../../MetalGLShaderConverter/macOS/MetalGLShaderConverter.framework; sourceTree = "<group>"; };
|
||||
A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = vulkangear.cpp; path = ../gears/vulkangear.cpp; sourceTree = "<group>"; };
|
||||
A94C8D5F1EA047B400B3CE07 /* vulkangear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = vulkangear.h; path = ../gears/vulkangear.h; sourceTree = "<group>"; };
|
||||
A951FF001E9C349000FA9144 /* camera.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = camera.hpp; sourceTree = "<group>"; };
|
||||
A951FF011E9C349000FA9144 /* frustum.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = frustum.hpp; sourceTree = "<group>"; };
|
||||
A951FF021E9C349000FA9144 /* keycodes.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = keycodes.hpp; sourceTree = "<group>"; };
|
||||
A951FF031E9C349000FA9144 /* threadpool.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = threadpool.hpp; sourceTree = "<group>"; };
|
||||
A951FF061E9C349000FA9144 /* VulkanBuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanBuffer.hpp; sourceTree = "<group>"; };
|
||||
A951FF071E9C349000FA9144 /* VulkanDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VulkanDebug.cpp; sourceTree = "<group>"; };
|
||||
A951FF081E9C349000FA9144 /* VulkanDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VulkanDebug.h; sourceTree = "<group>"; };
|
||||
A951FF091E9C349000FA9144 /* VulkanDevice.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanDevice.hpp; sourceTree = "<group>"; };
|
||||
A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vulkanexamplebase.cpp; sourceTree = "<group>"; };
|
||||
A951FF0B1E9C349000FA9144 /* vulkanexamplebase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkanexamplebase.h; sourceTree = "<group>"; };
|
||||
A951FF0C1E9C349000FA9144 /* VulkanFrameBuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanFrameBuffer.hpp; sourceTree = "<group>"; };
|
||||
A951FF0D1E9C349000FA9144 /* VulkanHeightmap.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanHeightmap.hpp; sourceTree = "<group>"; };
|
||||
A951FF0E1E9C349000FA9144 /* VulkanInitializers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanInitializers.hpp; sourceTree = "<group>"; };
|
||||
A951FF0F1E9C349000FA9144 /* VulkanModel.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanModel.hpp; sourceTree = "<group>"; };
|
||||
A951FF101E9C349000FA9144 /* VulkanSwapChain.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanSwapChain.hpp; sourceTree = "<group>"; };
|
||||
A951FF111E9C349000FA9144 /* VulkanTextOverlay.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanTextOverlay.hpp; sourceTree = "<group>"; };
|
||||
A951FF121E9C349000FA9144 /* VulkanTexture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanTexture.hpp; sourceTree = "<group>"; };
|
||||
A951FF131E9C349000FA9144 /* VulkanTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VulkanTools.cpp; sourceTree = "<group>"; };
|
||||
A951FF141E9C349000FA9144 /* VulkanTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VulkanTools.h; sourceTree = "<group>"; };
|
||||
A951FF241E9C7D2B00FA9144 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = "../libs/assimp/armeabi-v7a/libassimp.a"; sourceTree = "<group>"; };
|
||||
A951FF261E9C891A00FA9144 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = ../libs/assimp/ios/arm64/libassimp.a; sourceTree = "<group>"; };
|
||||
A977BCFE1B66BB010067E5BF /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A977BD211B67186B0067E5BF /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
A977BD221B67186B0067E5BF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
|
||||
A977BD231B67186B0067E5BF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
A977BD251B67186B0067E5BF /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
|
||||
A977BD261B67186B0067E5BF /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||
A98703D61E9D33990066959C /* libzlibstatic.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzlibstatic.a; path = ../libs/assimp/ios/arm64/libzlibstatic.a; sourceTree = "<group>"; };
|
||||
A98703D81E9D382A0066959C /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = ../data; sourceTree = "<group>"; };
|
||||
A9A222171B5D69F40050A5F9 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
|
||||
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||
A9B67B6B1C3AAE9800373FFD /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
A9B67B6E1C3AAE9800373FFD /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = "<group>"; };
|
||||
A9B67B6F1C3AAE9800373FFD /* DemoViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DemoViewController.mm; sourceTree = "<group>"; };
|
||||
A9B67B701C3AAE9800373FFD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A9B67B711C3AAE9800373FFD /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
A9B67B721C3AAE9800373FFD /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
|
||||
A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
|
||||
A9B67B751C3AAE9800373FFD /* Default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default~ipad.png"; sourceTree = "<group>"; };
|
||||
A9B67B761C3AAE9800373FFD /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
|
||||
A9B67B771C3AAE9800373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
A9B67B821C3AAEA200373FFD /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
A9B67B831C3AAEA200373FFD /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
A9B67B841C3AAEA200373FFD /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = "<group>"; };
|
||||
A9B67B851C3AAEA200373FFD /* DemoViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DemoViewController.mm; sourceTree = "<group>"; };
|
||||
A9B67B861C3AAEA200373FFD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A9B67B871C3AAEA200373FFD /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
A9B67B881C3AAEA200373FFD /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
|
||||
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
|
||||
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
|
||||
A9CDEA271B6A782C00F7B008 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
|
||||
A9E264761B671B0A00FE691A /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libc++.dylib"; sourceTree = DEVELOPER_DIR; };
|
||||
A9EFB8381E9D566000223542 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = ../libs/assimp/macos/libassimp.a; sourceTree = "<group>"; };
|
||||
A9EFB8391E9D566000223542 /* libzlibstatic.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzlibstatic.a; path = ../libs/assimp/macos/libzlibstatic.a; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A945BCFC1E9D4E8700BA3EE2 /* MoltenVK.framework in Frameworks */,
|
||||
A98703D71E9D33990066959C /* libzlibstatic.a in Frameworks */,
|
||||
A951FF271E9C891A00FA9144 /* libassimp.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
A977BCF11B66BB010067E5BF /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A91227C41E9D5F8200108018 /* libMoltenVK.dylib in Frameworks */,
|
||||
A91227C81E9D601900108018 /* libassimp.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* examples.app */,
|
||||
A977BCFE1B66BB010067E5BF /* examples.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A92F37071C7E1B2B008F8BC9 /* examples.h */,
|
||||
A951FEFF1E9C349000FA9144 /* base */,
|
||||
A94C8D5D1EA047A300B3CE07 /* extras */,
|
||||
A98703D81E9D382A0066959C /* data */,
|
||||
A9B67B6A1C3AAE9800373FFD /* iOS */,
|
||||
A9B67B811C3AAEA200373FFD /* macOS */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A91227C61E9D5FE500108018 /* libassimp.dylib */,
|
||||
A91227C21E9D5F5100108018 /* libMoltenVK.dylib */,
|
||||
A9EFB8381E9D566000223542 /* libassimp.a */,
|
||||
A9EFB8391E9D566000223542 /* libzlibstatic.a */,
|
||||
A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */,
|
||||
A98703D61E9D33990066959C /* libzlibstatic.a */,
|
||||
A951FF261E9C891A00FA9144 /* libassimp.a */,
|
||||
A951FF241E9C7D2B00FA9144 /* libassimp.a */,
|
||||
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */,
|
||||
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */,
|
||||
A9ADEC601B6EC2EB00DBA48C /* iOS */,
|
||||
A9ADEC611B6EC2F300DBA48C /* macOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A94C8D5D1EA047A300B3CE07 /* extras */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */,
|
||||
A94C8D5F1EA047B400B3CE07 /* vulkangear.h */,
|
||||
);
|
||||
name = extras;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A951FEFF1E9C349000FA9144 /* base */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A951FF001E9C349000FA9144 /* camera.hpp */,
|
||||
A951FF011E9C349000FA9144 /* frustum.hpp */,
|
||||
A951FF021E9C349000FA9144 /* keycodes.hpp */,
|
||||
A951FF031E9C349000FA9144 /* threadpool.hpp */,
|
||||
A951FF061E9C349000FA9144 /* VulkanBuffer.hpp */,
|
||||
A951FF071E9C349000FA9144 /* VulkanDebug.cpp */,
|
||||
A951FF081E9C349000FA9144 /* VulkanDebug.h */,
|
||||
A951FF091E9C349000FA9144 /* VulkanDevice.hpp */,
|
||||
A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */,
|
||||
A951FF0B1E9C349000FA9144 /* vulkanexamplebase.h */,
|
||||
A951FF0C1E9C349000FA9144 /* VulkanFrameBuffer.hpp */,
|
||||
A951FF0D1E9C349000FA9144 /* VulkanHeightmap.hpp */,
|
||||
A951FF0E1E9C349000FA9144 /* VulkanInitializers.hpp */,
|
||||
A951FF0F1E9C349000FA9144 /* VulkanModel.hpp */,
|
||||
A951FF101E9C349000FA9144 /* VulkanSwapChain.hpp */,
|
||||
A951FF111E9C349000FA9144 /* VulkanTextOverlay.hpp */,
|
||||
A951FF121E9C349000FA9144 /* VulkanTexture.hpp */,
|
||||
A951FF131E9C349000FA9144 /* VulkanTools.cpp */,
|
||||
A951FF141E9C349000FA9144 /* VulkanTools.h */,
|
||||
);
|
||||
name = base;
|
||||
path = ../base;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9ADEC601B6EC2EB00DBA48C /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A9A222171B5D69F40050A5F9 /* Metal.framework */,
|
||||
1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */,
|
||||
2D500B990D5A79CF00DBA0E3 /* QuartzCore.framework */,
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */,
|
||||
A9CDEA271B6A782C00F7B008 /* GLKit.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9ADEC611B6EC2F300DBA48C /* macOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A94A67231B7BDE9B00F6D7C4 /* MetalGL.framework */,
|
||||
A94A67241B7BDE9B00F6D7C4 /* MetalGLShaderConverter.framework */,
|
||||
A9E264761B671B0A00FE691A /* libc++.dylib */,
|
||||
A977BD251B67186B0067E5BF /* Metal.framework */,
|
||||
A977BD261B67186B0067E5BF /* QuartzCore.framework */,
|
||||
A977BD211B67186B0067E5BF /* AppKit.framework */,
|
||||
A977BD221B67186B0067E5BF /* CoreGraphics.framework */,
|
||||
A977BD231B67186B0067E5BF /* Foundation.framework */,
|
||||
);
|
||||
name = macOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9B67B6A1C3AAE9800373FFD /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A9B67B6B1C3AAE9800373FFD /* AppDelegate.h */,
|
||||
A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */,
|
||||
A9B67B6E1C3AAE9800373FFD /* DemoViewController.h */,
|
||||
A9B67B6F1C3AAE9800373FFD /* DemoViewController.mm */,
|
||||
A9B67B701C3AAE9800373FFD /* Info.plist */,
|
||||
A9B67B711C3AAE9800373FFD /* main.m */,
|
||||
A9B67B721C3AAE9800373FFD /* Prefix.pch */,
|
||||
A9B67B731C3AAE9800373FFD /* Resources */,
|
||||
);
|
||||
path = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9B67B731C3AAE9800373FFD /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */,
|
||||
A9B67B751C3AAE9800373FFD /* Default~ipad.png */,
|
||||
A9B67B761C3AAE9800373FFD /* Icon.png */,
|
||||
A9B67B771C3AAE9800373FFD /* Main.storyboard */,
|
||||
);
|
||||
path = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9B67B811C3AAEA200373FFD /* macOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A9B67B821C3AAEA200373FFD /* AppDelegate.h */,
|
||||
A9B67B831C3AAEA200373FFD /* AppDelegate.m */,
|
||||
A9B67B841C3AAEA200373FFD /* DemoViewController.h */,
|
||||
A9B67B851C3AAEA200373FFD /* DemoViewController.mm */,
|
||||
A9B67B861C3AAEA200373FFD /* Info.plist */,
|
||||
A9B67B871C3AAEA200373FFD /* main.m */,
|
||||
A9B67B881C3AAEA200373FFD /* Prefix.pch */,
|
||||
A9B67B891C3AAEA200373FFD /* Resources */,
|
||||
);
|
||||
path = macOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A9B67B891C3AAEA200373FFD /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */,
|
||||
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */,
|
||||
);
|
||||
path = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1D6058900D05DD3D006BFB54 /* examples-ios */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "examples-ios" */;
|
||||
buildPhases = (
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "examples-ios";
|
||||
productName = foo;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* examples.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
A977BCBD1B66BB010067E5BF /* examples-macos */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = A977BCFB1B66BB010067E5BF /* Build configuration list for PBXNativeTarget "examples-macos" */;
|
||||
buildPhases = (
|
||||
A977BCBE1B66BB010067E5BF /* Resources */,
|
||||
A977BCC91B66BB010067E5BF /* Sources */,
|
||||
A977BCF11B66BB010067E5BF /* Frameworks */,
|
||||
A91227BB1E9D5E9D00108018 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "examples-macos";
|
||||
productName = foo;
|
||||
productReference = A977BCFE1B66BB010067E5BF /* examples.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0820;
|
||||
TargetAttributes = {
|
||||
A977BCBD1B66BB010067E5BF = {
|
||||
DevelopmentTeam = VU3TCKU48B;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "examples" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* examples-ios */,
|
||||
A977BCBD1B66BB010067E5BF /* examples-macos */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A9B67B7F1C3AAE9800373FFD /* Icon.png in Resources */,
|
||||
A9B67B801C3AAE9800373FFD /* Main.storyboard in Resources */,
|
||||
A9B67B7E1C3AAE9800373FFD /* Default~ipad.png in Resources */,
|
||||
A9B67B7D1C3AAE9800373FFD /* Default-568h@2x.png in Resources */,
|
||||
A98703D91E9D382A0066959C /* data in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
A977BCBE1B66BB010067E5BF /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A9B67B911C3AAEA200373FFD /* macOS.xcassets in Resources */,
|
||||
A98703DA1E9D382A0066959C /* data in Resources */,
|
||||
A9B67B901C3AAEA200373FFD /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
||||
A9B67B7A1C3AAE9800373FFD /* DemoViewController.mm in Sources */,
|
||||
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */,
|
||||
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
||||
A94C8D601EA047B400B3CE07 /* vulkangear.cpp in Sources */,
|
||||
A951FF191E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */,
|
||||
A9B67B7C1C3AAE9800373FFD /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
A977BCC91B66BB010067E5BF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A951FF181E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
||||
A9B67B8C1C3AAEA200373FFD /* AppDelegate.m in Sources */,
|
||||
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */,
|
||||
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
||||
A94C8D611EA047B400B3CE07 /* vulkangear.cpp in Sources */,
|
||||
A951FF1A1E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */,
|
||||
A9B67B8D1C3AAEA200373FFD /* DemoViewController.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/MoltenVK/iOS\"";
|
||||
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
"DEBUG=1",
|
||||
_DEBUG,
|
||||
VK_USE_PLATFORM_IOS_MVK,
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../libs/assimp/ios\"";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALID_ARCHS = arm64;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/MoltenVK/iOS\"";
|
||||
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
VK_USE_PLATFORM_IOS_MVK,
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../libs/assimp/ios\"";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALID_ARCHS = arm64;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
A977BCFC1B66BB010067E5BF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
"DEBUG=1",
|
||||
_DEBUG,
|
||||
VK_USE_PLATFORM_MACOS_MVK,
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
||||
"\"$(SRCROOT)/../libs/assimp/macos\"",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
A977BCFD1B66BB010067E5BF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
VK_USE_PLATFORM_MACOS_MVK,
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
||||
"\"$(SRCROOT)/../libs/assimp/macos\"",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = MVK_vulkanscene;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"\"$(SRCROOT)/MoltenVK/include\"",
|
||||
"\"$(SRCROOT)/../external\"/**",
|
||||
);
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.moltenvk.${PRODUCT_NAME:identifier}";
|
||||
PRODUCT_NAME = "${PROJECT}";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
ENABLE_BITCODE = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = MVK_vulkanscene;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"\"$(SRCROOT)/MoltenVK/include\"",
|
||||
"\"$(SRCROOT)/../external\"/**",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.moltenvk.${PRODUCT_NAME:identifier}";
|
||||
PRODUCT_NAME = "${PROJECT}";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "examples-ios" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
A977BCFB1B66BB010067E5BF /* Build configuration list for PBXNativeTarget "examples-macos" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
A977BCFC1B66BB010067E5BF /* Debug */,
|
||||
A977BCFD1B66BB010067E5BF /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "examples" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
7
xcode/examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/bill/Documents/Dev/iOSProjects/Molten/Testing/MoltenVK/SaschaWillems/Vulkan-bw/xcode/examples.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "5B3778DF088377325550251267213ED1422AF030",
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
|
||||
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
|
||||
"986064432ACD0B21E33CA886A95425627120351A" : 9223372036854775807,
|
||||
"5B3778DF088377325550251267213ED1422AF030" : 9223372036854775807
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintIdentifierKey" : "CD2D1537-0CC5-4969-BD35-AB1ED0A0FACA",
|
||||
"DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
|
||||
"986064432ACD0B21E33CA886A95425627120351A" : "..\/..\/..\/Molten",
|
||||
"5B3778DF088377325550251267213ED1422AF030" : "Vulkan-bw\/"
|
||||
},
|
||||
"DVTSourceControlWorkspaceBlueprintNameKey" : "examples",
|
||||
"DVTSourceControlWorkspaceBlueprintVersion" : 204,
|
||||
"DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "xcode\/examples.xcodeproj",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
|
||||
{
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/brenwill\/Vulkan.git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "5B3778DF088377325550251267213ED1422AF030"
|
||||
},
|
||||
{
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/brenwill\/molten.git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
|
||||
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "986064432ACD0B21E33CA886A95425627120351A"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
version = "2.0">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-ios"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-ios"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
selectedDebuggerIdentifier = ""
|
||||
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugXPCServices = "NO"
|
||||
debugServiceExtension = "internal"
|
||||
enableGPUFrameCaptureMode = "3"
|
||||
enableGPUValidationMode = "1"
|
||||
allowLocationSimulation = "NO"
|
||||
viewDebuggingEnabled = "No"
|
||||
queueDebuggingEnabled = "No">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-ios"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-ios"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
version = "2.0">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "A977BCBD1B66BB010067E5BF"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-macos"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "A977BCBD1B66BB010067E5BF"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-macos"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
selectedDebuggerIdentifier = ""
|
||||
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "NO"
|
||||
debugXPCServices = "NO"
|
||||
debugServiceExtension = "internal"
|
||||
enableGPUFrameCaptureMode = "3"
|
||||
enableGPUValidationMode = "1"
|
||||
allowLocationSimulation = "NO"
|
||||
viewDebuggingEnabled = "No"
|
||||
queueDebuggingEnabled = "No">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "A977BCBD1B66BB010067E5BF"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-macos"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "A977BCBD1B66BB010067E5BF"
|
||||
BuildableName = "examples.app"
|
||||
BlueprintName = "examples-macos"
|
||||
ReferencedContainer = "container:examples.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
BIN
xcode/images/MoltenVK-Logo-Banner.png
Executable file
|
After Width: | Height: | Size: 160 KiB |
15
xcode/ios/AppDelegate.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//
|
||||
// AppDelegate.h
|
||||
//
|
||||
// Created by Bill Hollings on 2015/06/03.
|
||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
|
||||
@end
|
||||
|
||||
44
xcode/ios/AppDelegate.m
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
//
|
||||
// AppDelegate.m
|
||||
//
|
||||
// Created by Bill Hollings on 2015/06/03.
|
||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// Override point for customization after application launch.
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
@end
|
||||
32
xcode/ios/DemoViewController.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* DemoViewController.h
|
||||
*
|
||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
||||
* http://www.brenwill.com
|
||||
*
|
||||
* Use of this document is governed by the Molten License Agreement, as included
|
||||
* in the Molten distribution package. CAREFULLY READ THAT LICENSE AGREEMENT BEFORE
|
||||
* READING AND USING THIS DOCUMENT. BY READING OR OTHERWISE USING THIS DOCUMENT,
|
||||
* YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THAT LICENSE
|
||||
* AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS AND CONDITIONS OF THAT LICENSE AGREEMENT,
|
||||
* DO NOT READ OR USE THIS DOCUMENT.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoViewController
|
||||
|
||||
/** The main view controller for the demo storyboard. */
|
||||
@interface DemoViewController : UIViewController
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
|
||||
/** The Metal-compatibile view for the demo Storyboard. */
|
||||
@interface DemoView : UIView
|
||||
@end
|
||||
|
||||
63
xcode/ios/DemoViewController.mm
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* DemoViewController.mm
|
||||
*
|
||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
||||
* http://www.brenwill.com
|
||||
*/
|
||||
|
||||
#import "DemoViewController.h"
|
||||
|
||||
#include "examples.h"
|
||||
|
||||
|
||||
const std::string VulkanExampleBase::getAssetPath() {
|
||||
return [NSBundle.mainBundle.resourcePath stringByAppendingString: @"/data/"].UTF8String;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoViewController
|
||||
|
||||
@implementation DemoViewController {
|
||||
VulkanExample* _vulkanExample;
|
||||
CADisplayLink* _displayLink;
|
||||
}
|
||||
|
||||
/** Since this is a single-view app, init Vulkan when the view is loaded. */
|
||||
-(void) viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
_vulkanExample = new VulkanExample();
|
||||
_vulkanExample->initVulkan();
|
||||
_vulkanExample->setupWindow(self.view);
|
||||
_vulkanExample->initSwapchain();
|
||||
_vulkanExample->prepare();
|
||||
|
||||
uint32_t fps = 60;
|
||||
_displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(renderFrame)];
|
||||
[_displayLink setFrameInterval: 60 / fps];
|
||||
[_displayLink addToRunLoop: NSRunLoop.currentRunLoop forMode: NSDefaultRunLoopMode];
|
||||
}
|
||||
|
||||
-(void) renderFrame {
|
||||
_vulkanExample->renderFrame();
|
||||
}
|
||||
|
||||
-(void) dealloc {
|
||||
delete(_vulkanExample);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
|
||||
@implementation DemoView
|
||||
|
||||
/** Returns a Metal-compatible layer. */
|
||||
+(Class) layerClass { return [CAMetalLayer class]; }
|
||||
|
||||
@end
|
||||
|
||||
44
xcode/ios/Info.plist
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>iOS/Resources/Icon.png</string>
|
||||
<key>CFBundleIcons~ipad</key>
|
||||
<dict/>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string></string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiresFullScreen</key>
|
||||
<true/>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<true/>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
xcode/ios/Resources/Default-568h@2x.png
Executable file
|
After Width: | Height: | Size: 47 KiB |
BIN
xcode/ios/Resources/Default~ipad.png
Executable file
|
After Width: | Height: | Size: 48 KiB |
BIN
xcode/ios/Resources/Icon.png
Executable file
|
After Width: | Height: | Size: 5.8 KiB |
26
xcode/ios/Resources/Main.storyboard
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9060" systemVersion="15A279b" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vmV-Wi-8wg">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Demo View Controller-->
|
||||
<scene sceneID="UPC-Y9-dN2">
|
||||
<objects>
|
||||
<viewController id="vmV-Wi-8wg" customClass="DemoViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="klr-UD-pWY"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="lMV-Es-kLU"/>
|
||||
</layoutGuides>
|
||||
<view key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="xKx-Gc-5Is" customClass="DemoView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="ERB-qy-6pP" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="404" y="555"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
14
xcode/ios/main.m
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* main.m
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, @"AppDelegate");
|
||||
}
|
||||
}
|
||||
|
||||
12
xcode/macos/AppDelegate.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
//
|
||||
// AppDelegate.h
|
||||
//
|
||||
// Created by Bill Hollings on 2015/07/30.
|
||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface AppDelegate : NSObject <NSApplicationDelegate>
|
||||
|
||||
@end
|
||||
28
xcode/macos/AppDelegate.m
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
//
|
||||
// AppDelegate.m
|
||||
//
|
||||
// Created by Bill Hollings on 2015/07/30.
|
||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
// Insert code here to initialize your application
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)aNotification {
|
||||
// Insert code here to tear down your application
|
||||
}
|
||||
|
||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
32
xcode/macos/DemoViewController.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* DemoViewController.h
|
||||
*
|
||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
||||
* http://www.brenwill.com
|
||||
*
|
||||
* Use of this document is governed by the Molten License Agreement, as included
|
||||
* in the Molten distribution package. CAREFULLY READ THAT LICENSE AGREEMENT BEFORE
|
||||
* READING AND USING THIS DOCUMENT. BY READING OR OTHERWISE USING THIS DOCUMENT,
|
||||
* YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THAT LICENSE
|
||||
* AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS AND CONDITIONS OF THAT LICENSE AGREEMENT,
|
||||
* DO NOT READ OR USE THIS DOCUMENT.
|
||||
*/
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoViewController
|
||||
|
||||
/** The main view controller for the demo storyboard. */
|
||||
@interface DemoViewController : NSViewController
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
|
||||
/** The Metal-compatibile view for the demo Storyboard. */
|
||||
@interface DemoView : NSView
|
||||
@end
|
||||
|
||||
90
xcode/macos/DemoViewController.mm
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* DemoViewController.mm
|
||||
*
|
||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
||||
* http://www.brenwill.com
|
||||
*/
|
||||
|
||||
#import "DemoViewController.h"
|
||||
#import <QuartzCore/CAMetalLayer.h>
|
||||
|
||||
#include "examples.h"
|
||||
|
||||
|
||||
const std::string VulkanExampleBase::getAssetPath() {
|
||||
return [NSBundle.mainBundle.resourcePath stringByAppendingString: @"/data/"].UTF8String;
|
||||
}
|
||||
|
||||
/** Rendering loop callback function for use with a CVDisplayLink. */
|
||||
static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink,
|
||||
const CVTimeStamp* now,
|
||||
const CVTimeStamp* outputTime,
|
||||
CVOptionFlags flagsIn,
|
||||
CVOptionFlags* flagsOut,
|
||||
void* target) {
|
||||
((VulkanExample*)target)->renderFrame();
|
||||
return kCVReturnSuccess;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoViewController
|
||||
|
||||
@implementation DemoViewController {
|
||||
VulkanExample* _vulkanExample;
|
||||
CVDisplayLinkRef _displayLink;
|
||||
}
|
||||
|
||||
/** Since this is a single-view app, initialize Vulkan during view loading. */
|
||||
-(void) viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
self.view.wantsLayer = YES; // Back the view with a layer created by the makeBackingLayer method.
|
||||
|
||||
_vulkanExample = new VulkanExample();
|
||||
_vulkanExample->initVulkan();
|
||||
_vulkanExample->setupWindow(self.view);
|
||||
_vulkanExample->initSwapchain();
|
||||
_vulkanExample->prepare();
|
||||
|
||||
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
|
||||
CVDisplayLinkSetOutputCallback(_displayLink, &DisplayLinkCallback, _vulkanExample);
|
||||
CVDisplayLinkStart(_displayLink);
|
||||
}
|
||||
|
||||
/** Resize the window to fit the size of the content as set by the sample code. */
|
||||
-(void) viewWillAppear {
|
||||
[super viewWillAppear];
|
||||
|
||||
CGSize vSz = self.view.bounds.size;
|
||||
NSWindow *window = self.view.window;
|
||||
NSRect wFrm = [window contentRectForFrameRect: window.frame];
|
||||
NSRect newWFrm = [window frameRectForContentRect: NSMakeRect(wFrm.origin.x, wFrm.origin.y, vSz.width, vSz.height)];
|
||||
[window setFrame: newWFrm display: YES animate: window.isVisible];
|
||||
[window center];
|
||||
}
|
||||
|
||||
-(void) dealloc {
|
||||
CVDisplayLinkRelease(_displayLink);
|
||||
delete(_vulkanExample);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
|
||||
@implementation DemoView
|
||||
|
||||
/** Indicates that the view wants to draw using the backing layer instead of using drawRect:. */
|
||||
-(BOOL) wantsUpdateLayer { return YES; }
|
||||
|
||||
/** Returns a Metal-compatible layer. */
|
||||
+(Class) layerClass { return [CAMetalLayer class]; }
|
||||
|
||||
/** If the wantsLayer property is set to YES, this method will be invoked to return a layer instance. */
|
||||
-(CALayer*) makeBackingLayer { return [self.class.layerClass layer]; }
|
||||
|
||||
@end
|
||||
34
xcode/macos/Info.plist
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string></string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.</string>
|
||||
<key>NSMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
133
xcode/macos/Resources/Main.storyboard
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Application-->
|
||||
<scene sceneID="JPo-4y-FX3">
|
||||
<objects>
|
||||
<application id="hnw-xV-0zn" sceneMemberID="viewController">
|
||||
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
<menuItem title="MoltenVK Demo" id="1Xt-HY-uBw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="MoltenVK Demo" systemMenu="apple" id="uQy-DD-JDr">
|
||||
<items>
|
||||
<menuItem title="About Demo" id="5kV-Vb-QxS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="Ady-hI-5gd" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Hide Demo" keyEquivalent="h" id="Olw-nP-bQN">
|
||||
<connections>
|
||||
<action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="Kd2-mp-pUS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||
<menuItem title="Quit Demo" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<connections>
|
||||
<action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="aUF-d1-5bR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="R4o-n2-Eq4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="Ady-hI-5gd" id="DIl-cC-cCs"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
|
||||
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="Ady-hI-5gd" id="DRN-fu-gQh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="wpr-3q-Mcd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
|
||||
<items>
|
||||
<menuItem title="MoltenVK Demo Help" keyEquivalent="?" id="FKE-Sm-Kum">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="Ady-hI-5gd" id="y7X-2Q-9no"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
|
||||
</connections>
|
||||
</application>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
|
||||
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="83.5" y="-47"/>
|
||||
</scene>
|
||||
<!--Window Controller-->
|
||||
<scene sceneID="R2V-B0-nI4">
|
||||
<objects>
|
||||
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
|
||||
<window key="window" title="MoltenVK Vulkan Example" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="IQv-IB-iLA">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="1051" y="656" width="1024" height="768"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="1024" height="768"/>
|
||||
<value key="maxSize" type="size" width="1024" height="768"/>
|
||||
</window>
|
||||
<connections>
|
||||
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
|
||||
</connections>
|
||||
</windowController>
|
||||
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="83" y="146"/>
|
||||
</scene>
|
||||
<!--Demo View Controller-->
|
||||
<scene sceneID="hIz-AP-VOD">
|
||||
<objects>
|
||||
<viewController id="XfG-lQ-9wD" customClass="DemoViewController" sceneMemberID="viewController">
|
||||
<view key="view" id="m2S-Jp-Qdl" customClass="DemoView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="1024" height="768"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="83" y="713"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "16x16",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Icon-16.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "32x32",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Icon-32.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Icon-128.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Icon-256.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Icon-512.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 671 B |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 70 KiB |
6
xcode/macos/Resources/macOS.xcassets/Contents.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
12
xcode/macos/main.m
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
//
|
||||
// main.m
|
||||
//
|
||||
// Created by Bill Hollings on 2015/07/30.
|
||||
// Copyright © 2015 The Brenwill Workshop Ltd. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
return NSApplicationMain(argc, argv);
|
||||
}
|
||||