瀏覽代碼

Add renderer to app ownership.
TODO: Pass renderer to game_dispatch.

Sam Jaffe 6 年之前
父節點
當前提交
0294d3a453
共有 2 個文件被更改,包括 13 次插入25 次删除
  1. 6 24
      danmaku.xcodeproj/project.pbxproj
  2. 7 1
      danmaku/GameScene.mm

+ 6 - 24
danmaku.xcodeproj/project.pbxproj

@@ -7,6 +7,7 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		CD1C82DF2298A14000825C4E /* libgraphics.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CD7E883922960DBF00D877FE /* libgraphics.dylib */; };
 		CD7E87882295FCEA00D877FE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CD7E87872295FCEA00D877FE /* AppDelegate.m */; };
 		CD7E878F2295FCEA00D877FE /* GameScene.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD7E878E2295FCEA00D877FE /* GameScene.mm */; };
 		CD7E87942295FCEC00D877FE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD7E87932295FCEC00D877FE /* Assets.xcassets */; };
@@ -108,6 +109,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				CD1C82DF2298A14000825C4E /* libgraphics.dylib in Frameworks */,
 				CD7E882422960DA000D877FE /* libgameutils.dylib in Frameworks */,
 				CD7E881522960D8A00D877FE /* libengine.dylib in Frameworks */,
 			);
@@ -480,11 +482,8 @@
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/../../game/util/include/",
-					"$(PROJECT_DIR)/../../game/engine/include/",
-					"$(PROJECT_DIR)/../../game/include/expect/include",
-					"$(PROJECT_DIR)/../../game/math/include/",
-					"$(PROJECT_DIR)/../../game/math/",
+					"$(PROJECT_DIR)/../game/include/expect/include",
+					"$(BUILT_PRODUCTS_DIR)/usr/local/include/",
 				);
 			};
 			name = Debug;
@@ -540,11 +539,8 @@
 				MTL_FAST_MATH = YES;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/../../game/util/include/",
-					"$(PROJECT_DIR)/../../game/engine/include/",
-					"$(PROJECT_DIR)/../../game/include/expect/include",
-					"$(PROJECT_DIR)/../../game/math/include/",
-					"$(PROJECT_DIR)/../../game/math/",
+					"$(PROJECT_DIR)/../game/include/expect/include",
+					"$(BUILT_PRODUCTS_DIR)/usr/local/include/",
 				);
 			};
 			name = Release;
@@ -563,13 +559,6 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = leumasjaffe.danmaku;
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				USER_HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/../game/util/include/",
-					"$(PROJECT_DIR)/../game/engine/include/",
-					"$(PROJECT_DIR)/../game/include/expect/include",
-					"$(PROJECT_DIR)/../game/math/include/",
-					"$(PROJECT_DIR)/../game/math/",
-				);
 			};
 			name = Debug;
 		};
@@ -587,13 +576,6 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = leumasjaffe.danmaku;
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				USER_HEADER_SEARCH_PATHS = (
-					"$(PROJECT_DIR)/../game/util/include/",
-					"$(PROJECT_DIR)/../game/engine/include/",
-					"$(PROJECT_DIR)/../game/include/expect/include",
-					"$(PROJECT_DIR)/../game/math/include/",
-					"$(PROJECT_DIR)/../game/math/",
-				);
 			};
 			name = Release;
 		};

+ 7 - 1
danmaku/GameScene.mm

@@ -8,16 +8,19 @@
 
 #import "GameScene.h"
 
+#include <memory>
 #include <OpenGL/gl3.h>
 
 #include "game/engine/events.hpp"
 #include "game/engine/game_dispatch.hpp"
+#include "game/graphics/renderer.hpp"
 
 namespace env { namespace detail {
   extern void resize_screen(math::vec2i const&);
 }}
 
 @implementation GameScene {
+  std::shared_ptr<graphics::direct_renderer> renderer;
   engine::game_dispatch game;
 };
 
@@ -38,12 +41,15 @@ namespace env { namespace detail {
   // make the context current
   [[self openGLContext] makeCurrentContext];
   
+  using namespace graphics;
+  renderer = std::make_shared<direct_renderer>(driver::openGL);
+  
   // rest of your init method ...
   return self;
 }
 
 - (void)prepareOpenGL {
-  // Renderer::GetInstance().Clear();
+  renderer->clear();
   // enable vertical sychronization to refresh rate
   const GLint vals = 0x01;
   [[self openGLContext] setValues:&vals forParameter:NSOpenGLCPSwapInterval];