diff --git a/CMakeLists.txt b/CMakeLists.txt index b629bdb6..4b938c9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,6 +107,7 @@ set(SPIRV_CROSS_STATIC ON CACHE BOOL "Prefer static libs" FORCE) # add_subdirectory(3rdparty/DiligentCore) add_subdirectory(3rdparty/glslang) add_subdirectory(3rdparty/SPIRV-Cross) +add_subdirectory(3rdparty/VulkanMemoryAllocator) set(XXHASH_BUILD_XXHSUM OFF) option(BUILD_SHARED_LIBS OFF) @@ -208,10 +209,12 @@ set(SOURCE_FILES MobileGL/MG_Backend/DirectGLES/Managers.cpp MobileGL/MG_Backend/DirectVulkan/DirectVulkan.cpp + MobileGL/MG_Backend/DirectVulkan/VmaImpl.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/VulkanRenderer.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/SwapchainObject.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/FrameContext.cpp MobileGL/MG_Backend/DirectVulkan/Renderer/ProgramFactory.cpp + MobileGL/MG_Backend/DirectVulkan/Renderer/VkBufferObject.cpp MobileGL/MG_State/GLState/Core.cpp MobileGL/MG_State/GLState/ErrorState/Error.cpp @@ -246,6 +249,7 @@ set(MOBILEGL_LINK_LIBRARIES SPIRV-Tools-opt SPIRV-Tools xxHash::xxhash + GPUOpen::VulkanMemoryAllocator ) set(MOBILEGL_INCLUDE_DIR diff --git a/MobileGL/MG_Test/Backend/DirectVulkan/TestExec.cpp b/MobileGL/MG_Test/Backend/DirectVulkan/TestExec.cpp index ece297ee..d16f4ded 100644 --- a/MobileGL/MG_Test/Backend/DirectVulkan/TestExec.cpp +++ b/MobileGL/MG_Test/Backend/DirectVulkan/TestExec.cpp @@ -8,20 +8,26 @@ #include #include +#include #include +#define GLFW_INCLUDE_NONE #include -#define EGLAPI +#define GL_GLEXT_PROTOTYPES +#include +#include +#undef GL_GLEXT_PROTOTYPES + +#ifndef EGLAPI +#define EGLAPI extern +#endif #include #ifdef _WIN32 #define GLFW_EXPOSE_NATIVE_WIN32 #elif defined(__APPLE__) #define GLFW_EXPOSE_NATIVE_COCOA #endif -#include "Init.h" -#include "MG_Backend/DirectVulkan/DirectVulkan.h" -#include "MG_Backend/DirectVulkan/Renderer/VulkanRenderer.h" #include #ifdef __APPLE__ @@ -30,6 +36,10 @@ #include #endif +namespace MobileGL { + void MG_Initialize(); +} + int main() { glfwInit(); @@ -75,6 +85,16 @@ int main() { MobileGL::MG_Initialize(); + GLuint vao = 0; + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + + static constexpr GLushort kTriangleIndices[] = {0, 1, 2}; + GLuint ebo = 0; + glGenBuffers(1, &ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(kTriangleIndices), kTriangleIndices, GL_STATIC_DRAW); + int i = 0; while(!glfwWindowShouldClose(window)) { glfwPollEvents(); @@ -85,7 +105,7 @@ int main() { glClearColor(0.0f, 1.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); if (i % 500 > 250) - glDrawArrays(GL_TRIANGLES, 0, 3); + glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, nullptr); eglSwapBuffers(display, surface); ++i; }