Branimir Karadžić преди 9 години
родител
ревизия
662716a6ac
променени са 1 файла, в които са добавени 71 реда и са изтрити 49 реда
  1. 71 49
      examples/00-helloworld/helloworld.cpp

+ 71 - 49
examples/00-helloworld/helloworld.cpp

@@ -3,60 +3,82 @@
  * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
  */
 
-#include "common.h"
-#include <bgfx/bgfx.h>
 #include <bx/uint32_t.h>
+#include "common.h"
+#include "bgfx_utils.h"
 #include "logo.h"
 
-int _main_(int /*_argc*/, char** /*_argv*/)
+class ExampleHelloWorld : public entry::AppI
 {
-	uint32_t width = 1280;
-	uint32_t height = 720;
-	uint32_t debug = BGFX_DEBUG_TEXT;
-	uint32_t reset = BGFX_RESET_VSYNC;
-
-	bgfx::init();
-	bgfx::reset(width, height, reset);
-
-	// Enable debug text.
-	bgfx::setDebug(debug);
-
-	// Set view 0 clear state.
-	bgfx::setViewClear(0
-		, BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH
-		, 0x303030ff
-		, 1.0f
-		, 0
-		);
-
-	while (!entry::processEvents(width, height, debug, reset) )
+	void init(int _argc, char** _argv) BX_OVERRIDE
+	{
+		Args args(_argc, _argv);
+
+		m_width  = 1280;
+		m_height = 720;
+		m_debug  = BGFX_DEBUG_TEXT;
+		m_reset  = BGFX_RESET_VSYNC;
+
+		bgfx::init(args.m_type, args.m_pciId);
+		bgfx::reset(m_width, m_height, m_reset);
+
+		// Enable debug text.
+		bgfx::setDebug(m_debug);
+
+		// Set view 0 clear state.
+		bgfx::setViewClear(0
+				, BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH
+				, 0x303030ff
+				, 1.0f
+				, 0
+				);
+	}
+
+	virtual int shutdown() BX_OVERRIDE
 	{
-		// Set view 0 default viewport.
-		bgfx::setViewRect(0, 0, 0, width, height);
-
-		// This dummy draw call is here to make sure that view 0 is cleared
-		// if no other draw calls are submitted to view 0.
-		bgfx::touch(0);
-
-		// Use debug font to print information about this example.
-		bgfx::dbgTextClear();
-		bgfx::dbgTextImage(bx::uint16_max(width/2/8, 20)-20
-						 , bx::uint16_max(height/2/16, 6)-6
-						 , 40
-						 , 12
-						 , s_logo
-						 , 160
-						 );
-		bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld");
-		bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text.");
-
-		// Advance to next frame. Rendering thread will be kicked to
-		// process submitted rendering primitives.
-		bgfx::frame();
+		// Shutdown bgfx.
+		bgfx::shutdown();
+
+		return 0;
+	}
+
+	bool update() BX_OVERRIDE
+	{
+		if (!entry::processEvents(m_width, m_height, m_debug, m_reset) )
+		{
+			// Set view 0 default viewport.
+			bgfx::setViewRect(0, 0, 0, m_width, m_height);
+
+			// This dummy draw call is here to make sure that view 0 is cleared
+			// if no other draw calls are submitted to view 0.
+			bgfx::touch(0);
+
+			// Use debug font to print information about this example.
+			bgfx::dbgTextClear();
+			bgfx::dbgTextImage(bx::uint16_max(m_width /2/8, 20)-20
+							 , bx::uint16_max(m_height/2/16, 6)-6
+							 , 40
+							 , 12
+							 , s_logo
+							 , 160
+							 );
+			bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld");
+			bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text.");
+
+			// Advance to next frame. Rendering thread will be kicked to
+			// process submitted rendering primitives.
+			bgfx::frame();
+
+			return true;
+		}
+
+		return false;
 	}
 
-	// Shutdown bgfx.
-	bgfx::shutdown();
+	uint32_t m_width;
+	uint32_t m_height;
+	uint32_t m_debug;
+	uint32_t m_reset;
+};
 
-	return 0;
-}
+ENTRY_IMPLEMENT_MAIN(ExampleHelloWorld);