From 597870d957ad1f9cd64da480668b21eac1e31370 Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 15 Dec 2022 05:19:53 +0100 Subject: [PATCH] prepare mesh loading from obj --- flake.nix | 1 + src/Mesh.hs | 8 ++++++++ src/Types.hs | 1 + vulkan-tutorial.cabal | 1 + 4 files changed, 11 insertions(+) diff --git a/flake.nix b/flake.nix index 9aec260..165c82f 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,7 @@ packages.${packageName} = # (ref:haskell-package-def) haskellPackages.callCabal2nix packageName self rec { # Dependency overrides go here + wavefront = jailbreakUnbreak haskellPackages.wavefront; }; defaultPackage = self.packages.${system}.${packageName}; diff --git a/src/Mesh.hs b/src/Mesh.hs index 1c6ce94..c57bbd5 100644 --- a/src/Mesh.hs +++ b/src/Mesh.hs @@ -3,6 +3,8 @@ {-# LANGUAGE DataKinds #-} module Mesh where +import Codec.Wavefront + import Control.Monad.IO.Class import Control.Monad.Trans.Resource @@ -65,3 +67,9 @@ uploadMesh vertices allocator = do release dataReleaseKey return mesh + +loadFromObj + :: (MonadResource m, MonadFail m) + => FilePath + -> m Mesh +loadFromObj filepath = undefined diff --git a/src/Types.hs b/src/Types.hs index 212e00f..69c142c 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -41,6 +41,7 @@ data EngineData = EngineData , engineImageAvailableSemaphore :: Vk.Semaphore , engineRenderFinishedSemaphore :: Vk.Semaphore , engineMesh :: Mesh + , engineExternalMesh :: Mesh , engineAllocator :: VMA.Allocator } diff --git a/vulkan-tutorial.cabal b/vulkan-tutorial.cabal index 56f666f..f8abe92 100644 --- a/vulkan-tutorial.cabal +++ b/vulkan-tutorial.cabal @@ -43,6 +43,7 @@ executable vulkan-tutorial , vulkan-api , vulkan-utils , VulkanMemoryAllocator + , wavefront , linear , monad-loops , stm