<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://horde3d.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hannofcart</id>
		<title>Horde3D Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://horde3d.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hannofcart"/>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Special:Contributions/Hannofcart"/>
		<updated>2026-04-11T11:05:53Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.3</generator>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=703</id>
		<title>Tutorial - Setup Horde with SFML</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=703"/>
				<updated>2011-08-20T05:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hannofcart: Fixed fullscreen toggling error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content='''Using Horde with SFML.''' &lt;br /&gt;
&lt;br /&gt;
[http://www.sfml-dev.org/ SFML - Simple Fast Multimedia Library] is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc.&lt;br /&gt;
&lt;br /&gt;
The following example is a rewrite of main.cpp of the Horde sample - Chicago using SFML (instead of GLFW that the sample in trunk uses).&lt;br /&gt;
To test the sample, simply replace the code in main.cpp of the Chicago sample app with this code. &lt;br /&gt;
This code only requires SFML::Window library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= main.cpp for Chicago Sample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
//&lt;br /&gt;
// Horde3D&lt;br /&gt;
//   Next-Generation Graphics Engine&lt;br /&gt;
//&lt;br /&gt;
// Sample Application&lt;br /&gt;
// --------------------------------------&lt;br /&gt;
// Copyright (C) 2006-2011 Nicolas Schulz&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// This sample source file is not covered by the EPL as the rest of the SDK&lt;br /&gt;
// and may be used without any restrictions. However, the EPL's disclaimer of&lt;br /&gt;
// warranty and liability shall be in effect for this file.&lt;br /&gt;
//&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
&lt;br /&gt;
#define _CRT_SECURE_NO_WARNINGS&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SFML/Window.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;app.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Configuration&lt;br /&gt;
const int appWidth = 1024;&lt;br /&gt;
const int appHeight = 576;&lt;br /&gt;
static bool fullScreen = false;&lt;br /&gt;
static int benchmarkLength = 600;&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int&amp;amp;, int&amp;amp;, bool, const char* title );&lt;br /&gt;
static bool running;&lt;br /&gt;
static int mx0, my0;&lt;br /&gt;
static Application *app;&lt;br /&gt;
&lt;br /&gt;
sf::Window* pSfmlWindow;&lt;br /&gt;
sf::Clock RenderClock;&lt;br /&gt;
double timeAtLastFrame;&lt;br /&gt;
double timeSinceLastFrame;&lt;br /&gt;
double timeAtCurrentFrame;&lt;br /&gt;
&lt;br /&gt;
std::string extractAppPath( char *fullPath )&lt;br /&gt;
{&lt;br /&gt;
#ifdef __APPLE__&lt;br /&gt;
	std::string s( fullPath );&lt;br /&gt;
	for( int i = 0; i &amp;lt; 4; ++i )&lt;br /&gt;
		s = s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) );&lt;br /&gt;
	return s + &amp;quot;/../&amp;quot;;&lt;br /&gt;
#else&lt;br /&gt;
	const std::string s( fullPath );&lt;br /&gt;
	if( s.find( &amp;quot;/&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) ) + &amp;quot;/&amp;quot;;&lt;br /&gt;
	else if( s.find( &amp;quot;\\&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;\\&amp;quot; ) ) + &amp;quot;\\&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int windowCloseListener()&lt;br /&gt;
{&lt;br /&gt;
	running = false;&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyPressListener( int key )&lt;br /&gt;
{&lt;br /&gt;
	if( !running ) return;&lt;br /&gt;
	&lt;br /&gt;
	int width = appWidth, height = appHeight;&lt;br /&gt;
	&lt;br /&gt;
	switch (key)&lt;br /&gt;
	{&lt;br /&gt;
		case sf::Key::Escape:&lt;br /&gt;
			running = false;&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F1:&lt;br /&gt;
			app-&amp;gt;release();		&lt;br /&gt;
			// Toggle fullscreen mode&lt;br /&gt;
			fullScreen = !fullScreen;&lt;br /&gt;
			setupWindow(width, height, fullScreen, app-&amp;gt;getTitle());		&lt;br /&gt;
			app-&amp;gt;init();&lt;br /&gt;
			app-&amp;gt;resize( width, height );&lt;br /&gt;
			break;&lt;br /&gt;
			&lt;br /&gt;
			//KLUDGE ALERT: &lt;br /&gt;
			//The samples in trunk use GLFW keycodes to set keystates&lt;br /&gt;
			//within Application. In order not to modify the sample code&lt;br /&gt;
			//we play nice and set the GLFW keycoded array it is interested in&lt;br /&gt;
		case sf::Key::Space:&lt;br /&gt;
			app-&amp;gt;setKeyState(32,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F3:&lt;br /&gt;
			app-&amp;gt;setKeyState(260,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F6:&lt;br /&gt;
			app-&amp;gt;setKeyState(263,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F7:&lt;br /&gt;
			app-&amp;gt;setKeyState(264,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F8:&lt;br /&gt;
			app-&amp;gt;setKeyState(265,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::LShift:&lt;br /&gt;
			app-&amp;gt;setKeyState(287,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::W:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('W'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::A:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('A'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::S:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('S'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::D:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('D'),true);&lt;br /&gt;
			break;			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void mouseMoveListener( int x, int y )&lt;br /&gt;
{&lt;br /&gt;
	if( !running )&lt;br /&gt;
	{&lt;br /&gt;
		mx0 = x; my0 = y;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	app-&amp;gt;mouseMoveEvent( (float)(x - mx0), (float)(my0 - y) );&lt;br /&gt;
	mx0 = x; my0 = y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int&amp;amp; width, int&amp;amp; height, bool fullscreen, const char* windowTitle = NULL)&lt;br /&gt;
{	&lt;br /&gt;
	//Initialise OpenGL context using SFML&lt;br /&gt;
	sf::WindowSettings Settings;	 // Create a settings object to initialise OpenGL context with 	&lt;br /&gt;
	Settings.DepthBits         = 24; // Request a 24 bits depth buffer&lt;br /&gt;
	Settings.StencilBits       = 8;  // Request a 8 bits stencil buffer&lt;br /&gt;
	Settings.AntialiasingLevel = 2;  // Request 2 levels of antialiasing&lt;br /&gt;
	&lt;br /&gt;
	if(!windowTitle)&lt;br /&gt;
		windowTitle = &amp;quot;SFML Chicago sample&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if (pSfmlWindow==NULL)	//First time creation&lt;br /&gt;
	{	&lt;br /&gt;
		pSfmlWindow = new sf::Window(sf::VideoMode(width, height, 32),	//Create a width * height framebuffer with 32 bits per pixel&lt;br /&gt;
									 windowTitle,						//Title for the window to be created&lt;br /&gt;
									 sf::Style::Close,					//Create a window with a titlebar and close button&lt;br /&gt;
									 Settings);							//Settings object to initialise the OpenGL context with		&lt;br /&gt;
	}&lt;br /&gt;
	else	//Reinitialisation of window&lt;br /&gt;
	{	&lt;br /&gt;
		//Close the old window&lt;br /&gt;
		//pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
&lt;br /&gt;
		//Initialise a new window&lt;br /&gt;
		if(fullscreen)&lt;br /&gt;
		{	&lt;br /&gt;
			// Creating a fullscreen window with the best video mode supported&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode::GetMode(0),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Fullscreen,&lt;br /&gt;
								Settings);&lt;br /&gt;
			width = pSfmlWindow-&amp;gt;GetWidth();&lt;br /&gt;
			height = pSfmlWindow-&amp;gt;GetHeight();&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{	&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode(width, height, 32),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Close,					&lt;br /&gt;
								Settings);									&lt;br /&gt;
		}		&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( int argc, char** argv )&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;Starting SFML Chicago!\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Initialize application and engine&lt;br /&gt;
	app = new Application( std::string(argv[0]) );&lt;br /&gt;
&lt;br /&gt;
	// Initialize a GLFW window&lt;br /&gt;
	pSfmlWindow = NULL;&lt;br /&gt;
	int width = appWidth, height = appHeight;&lt;br /&gt;
	if( !setupWindow( width, height, fullScreen, app-&amp;gt;getTitle() ) ) return -1;&lt;br /&gt;
		&lt;br /&gt;
	// Check if benchmark mode is requested&lt;br /&gt;
	bool benchmark = false;&lt;br /&gt;
	if( argc &amp;gt; 1 &amp;amp;&amp;amp; strcmp( argv[1], &amp;quot;-bm&amp;quot; ) == 0 )&lt;br /&gt;
	{	&lt;br /&gt;
		benchmark = true;&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
		//glfwDisable( GLFW_AUTO_POLL_EVENTS );&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	if ( !app-&amp;gt;init() )&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Unable to initalize engine&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Make sure you have an OpenGL 2.0 compatible graphics card&amp;quot;;&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	app-&amp;gt;resize( appWidth, appHeight );&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(false);&lt;br /&gt;
&lt;br /&gt;
	int frames = 0;&lt;br /&gt;
	float fps = 30.0f;&lt;br /&gt;
	timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
	RenderClock.Reset();	&lt;br /&gt;
	timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
	running = true;&lt;br /&gt;
	&lt;br /&gt;
	// Game loop&lt;br /&gt;
	while( running )&lt;br /&gt;
	{&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		&lt;br /&gt;
		// Calc FPS&lt;br /&gt;
		++frames;&lt;br /&gt;
		if( !benchmark &amp;amp;&amp;amp; frames &amp;gt;= 3 )&lt;br /&gt;
		{&lt;br /&gt;
			fps = frames / (float)timeSinceLastFrame;&lt;br /&gt;
			if( fps &amp;lt; 5 ) fps = 30;  // Handle breakpoints&lt;br /&gt;
			frames = 0;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//Initialise all app keys' states to false&lt;br /&gt;
		for( int i = 0; i &amp;lt; 320; ++i )&lt;br /&gt;
			app-&amp;gt;setKeyState(i,false);&lt;br /&gt;
&lt;br /&gt;
		// Inject inputs from SFML&lt;br /&gt;
		sf::Event Event;&lt;br /&gt;
		while (pSfmlWindow-&amp;gt;GetEvent(Event))&lt;br /&gt;
		{&lt;br /&gt;
			// Window closed&lt;br /&gt;
			if (Event.Type == sf::Event::Closed)&lt;br /&gt;
				running = false;&lt;br /&gt;
			// Key Press Event&lt;br /&gt;
			else if (Event.Type == sf::Event::KeyPressed)&lt;br /&gt;
			{	&lt;br /&gt;
				keyPressListener(Event.Key.Code);&lt;br /&gt;
			}&lt;br /&gt;
			else if(Event.Type == sf::Event::MouseMoved)&lt;br /&gt;
			{&lt;br /&gt;
				mouseMoveListener(Event.MouseMove.X,Event.MouseMove.Y);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		app-&amp;gt;keyStateHandler();&lt;br /&gt;
		&lt;br /&gt;
		// Render&lt;br /&gt;
		app-&amp;gt;mainLoop( benchmark ? 60 : fps );		&lt;br /&gt;
		pSfmlWindow-&amp;gt;Display();&lt;br /&gt;
		&lt;br /&gt;
		if( benchmark &amp;amp;&amp;amp; frames == benchmarkLength ) break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(true);&lt;br /&gt;
	&lt;br /&gt;
	// Show benchmark results&lt;br /&gt;
	if( benchmark )&lt;br /&gt;
	{	&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		double avgFPS = benchmarkLength / timeSinceLastFrame;&lt;br /&gt;
		char title[256];&lt;br /&gt;
		sprintf( title, &amp;quot;Average FPS: %.2f&amp;quot;, avgFPS );&lt;br /&gt;
		&lt;br /&gt;
		//Simply write the logistics to console&lt;br /&gt;
		printf(&amp;quot;%s&amp;quot;,title);&lt;br /&gt;
		&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
//		double startTime = glfwGetTime();&lt;br /&gt;
//		while( glfwGetTime() - startTime &amp;lt; 5.0 ) {}  // Sleep&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	// Quit&lt;br /&gt;
	app-&amp;gt;release();&lt;br /&gt;
	delete app;&lt;br /&gt;
	&lt;br /&gt;
	if(pSfmlWindow-&amp;gt;IsOpened())&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
	&lt;br /&gt;
	delete pSfmlWindow;&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary|&lt;br /&gt;
name = Horde With SFML|&lt;br /&gt;
screenshot = H3DPlaceHolder.png|&lt;br /&gt;
description = This tutorial introduces the use of Horde3D with SFML|&lt;br /&gt;
version = 1.0|&lt;br /&gt;
horde3dversion = 1.0 beta|&lt;br /&gt;
released = 2011-08-20|&lt;br /&gt;
author = Balajee.R.C (Hannofcart) |&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hannofcart</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=702</id>
		<title>Tutorial - Setup Horde with SFML</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=702"/>
				<updated>2011-08-19T20:11:10Z</updated>
		
		<summary type="html">&lt;p&gt;Hannofcart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content='''Using Horde with SFML.''' &lt;br /&gt;
&lt;br /&gt;
[http://www.sfml-dev.org/ SFML - Simple Fast Multimedia Library] is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc.&lt;br /&gt;
&lt;br /&gt;
The following example is a rewrite of main.cpp of the Horde sample - Chicago using SFML (instead of GLFW that the sample in trunk uses).&lt;br /&gt;
To test the sample, simply replace the code in main.cpp of the Chicago sample app with this code. &lt;br /&gt;
This code only requires SFML::Window library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= main.cpp for Chicago Sample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
//&lt;br /&gt;
// Horde3D&lt;br /&gt;
//   Next-Generation Graphics Engine&lt;br /&gt;
//&lt;br /&gt;
// Sample Application&lt;br /&gt;
// --------------------------------------&lt;br /&gt;
// Copyright (C) 2006-2011 Nicolas Schulz&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// This sample source file is not covered by the EPL as the rest of the SDK&lt;br /&gt;
// and may be used without any restrictions. However, the EPL's disclaimer of&lt;br /&gt;
// warranty and liability shall be in effect for this file.&lt;br /&gt;
//&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
&lt;br /&gt;
#define _CRT_SECURE_NO_WARNINGS&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SFML/Window.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;app.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Configuration&lt;br /&gt;
const int appWidth = 1024;&lt;br /&gt;
const int appHeight = 576;&lt;br /&gt;
static bool fullScreen = false;&lt;br /&gt;
static int benchmarkLength = 600;&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int, int, bool, const char* title );&lt;br /&gt;
static bool running;&lt;br /&gt;
static int mx0, my0;&lt;br /&gt;
static Application *app;&lt;br /&gt;
&lt;br /&gt;
sf::Window* pSfmlWindow;&lt;br /&gt;
sf::Clock RenderClock;&lt;br /&gt;
double timeAtLastFrame;&lt;br /&gt;
double timeSinceLastFrame;&lt;br /&gt;
double timeAtCurrentFrame;&lt;br /&gt;
&lt;br /&gt;
std::string extractAppPath( char *fullPath )&lt;br /&gt;
{&lt;br /&gt;
#ifdef __APPLE__&lt;br /&gt;
	std::string s( fullPath );&lt;br /&gt;
	for( int i = 0; i &amp;lt; 4; ++i )&lt;br /&gt;
		s = s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) );&lt;br /&gt;
	return s + &amp;quot;/../&amp;quot;;&lt;br /&gt;
#else&lt;br /&gt;
	const std::string s( fullPath );&lt;br /&gt;
	if( s.find( &amp;quot;/&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) ) + &amp;quot;/&amp;quot;;&lt;br /&gt;
	else if( s.find( &amp;quot;\\&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;\\&amp;quot; ) ) + &amp;quot;\\&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int windowCloseListener()&lt;br /&gt;
{&lt;br /&gt;
	running = false;&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyPressListener( int key )&lt;br /&gt;
{&lt;br /&gt;
	if( !running ) return;&lt;br /&gt;
&lt;br /&gt;
	int width = appWidth, height = appHeight;&lt;br /&gt;
	&lt;br /&gt;
	switch (key)&lt;br /&gt;
	{&lt;br /&gt;
		case sf::Key::Escape:&lt;br /&gt;
			running = false;&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F1:&lt;br /&gt;
			app-&amp;gt;release();		&lt;br /&gt;
			// Toggle fullscreen mode&lt;br /&gt;
			fullScreen = !fullScreen;&lt;br /&gt;
			setupWindow(appWidth, appHeight, fullScreen, app-&amp;gt;getTitle());		&lt;br /&gt;
			app-&amp;gt;init();&lt;br /&gt;
			app-&amp;gt;resize( width, height );&lt;br /&gt;
			break;&lt;br /&gt;
		&lt;br /&gt;
		//KLUDGE ALERT: &lt;br /&gt;
		//The samples in trunk use GLFW keycodes to set keystates&lt;br /&gt;
		//within Application. In order not to modify the sample code&lt;br /&gt;
		//we play nice and set the GLFW keycoded array it is interested in&lt;br /&gt;
		case sf::Key::Space:&lt;br /&gt;
			app-&amp;gt;setKeyState(32,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F3:&lt;br /&gt;
			app-&amp;gt;setKeyState(260,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F6:&lt;br /&gt;
			app-&amp;gt;setKeyState(263,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F7:&lt;br /&gt;
			app-&amp;gt;setKeyState(264,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F8:&lt;br /&gt;
			app-&amp;gt;setKeyState(265,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::LShift:&lt;br /&gt;
			app-&amp;gt;setKeyState(287,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::W:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('W'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::A:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('A'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::S:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('S'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::D:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('D'),true);&lt;br /&gt;
			break;			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void mouseMoveListener( int x, int y )&lt;br /&gt;
{&lt;br /&gt;
	if( !running )&lt;br /&gt;
	{&lt;br /&gt;
		mx0 = x; my0 = y;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	app-&amp;gt;mouseMoveEvent( (float)(x - mx0), (float)(my0 - y) );&lt;br /&gt;
	mx0 = x; my0 = y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int width, int height, bool fullscreen, const char* windowTitle = NULL)&lt;br /&gt;
{	&lt;br /&gt;
	//Initialise OpenGL context using SFML&lt;br /&gt;
	sf::WindowSettings Settings;	 // Create a settings object to initialise OpenGL context with 	&lt;br /&gt;
	Settings.DepthBits         = 24; // Request a 24 bits depth buffer&lt;br /&gt;
	Settings.StencilBits       = 8;  // Request a 8 bits stencil buffer&lt;br /&gt;
	Settings.AntialiasingLevel = 2;  // Request 2 levels of antialiasing&lt;br /&gt;
	&lt;br /&gt;
	if(!windowTitle)&lt;br /&gt;
		windowTitle = &amp;quot;SFML Chicago sample&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if (pSfmlWindow==NULL)	//First time creation&lt;br /&gt;
	{	&lt;br /&gt;
		pSfmlWindow = new sf::Window(sf::VideoMode(width, height, 32),	//Create a width * height framebuffer with 32 bits per pixel&lt;br /&gt;
									 windowTitle,						//Title for the window to be created&lt;br /&gt;
									 sf::Style::Close,					//Create a window with a titlebar and close button&lt;br /&gt;
									 Settings);							//Settings object to initialise the OpenGL context with		&lt;br /&gt;
	}&lt;br /&gt;
	else	//Reinitialisation of window&lt;br /&gt;
	{	&lt;br /&gt;
		//Close the old window&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
&lt;br /&gt;
		//Initialise a new window&lt;br /&gt;
		if(fullscreen)&lt;br /&gt;
		{	&lt;br /&gt;
			// Creating a fullscreen window with the best video mode supported&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode::GetMode(0),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Fullscreen,&lt;br /&gt;
								Settings);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{	&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode(width, height, 32),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Close,					&lt;br /&gt;
								Settings);									&lt;br /&gt;
		}		&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( int argc, char** argv )&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;Starting SFML Chicago!\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Initialize application and engine&lt;br /&gt;
	app = new Application( extractAppPath(argv[0]) );&lt;br /&gt;
&lt;br /&gt;
	// Initialize a GLFW window&lt;br /&gt;
	pSfmlWindow = NULL;&lt;br /&gt;
	if( !setupWindow( appWidth, appHeight, fullScreen, app-&amp;gt;getTitle() ) ) return -1;&lt;br /&gt;
		&lt;br /&gt;
	// Check if benchmark mode is requested&lt;br /&gt;
	bool benchmark = false;&lt;br /&gt;
	if( argc &amp;gt; 1 &amp;amp;&amp;amp; strcmp( argv[1], &amp;quot;-bm&amp;quot; ) == 0 )&lt;br /&gt;
	{	&lt;br /&gt;
		benchmark = true;&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
		//glfwDisable( GLFW_AUTO_POLL_EVENTS );&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	if ( !app-&amp;gt;init() )&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Unable to initalize engine&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Make sure you have an OpenGL 2.0 compatible graphics card&amp;quot;;&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	app-&amp;gt;resize( appWidth, appHeight );&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(false);&lt;br /&gt;
&lt;br /&gt;
	int frames = 0;&lt;br /&gt;
	float fps = 30.0f;&lt;br /&gt;
	timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
	RenderClock.Reset();	&lt;br /&gt;
	timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
	running = true;&lt;br /&gt;
	&lt;br /&gt;
	// Game loop&lt;br /&gt;
	while( running )&lt;br /&gt;
	{&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		&lt;br /&gt;
		// Calc FPS&lt;br /&gt;
		++frames;&lt;br /&gt;
		if( !benchmark &amp;amp;&amp;amp; frames &amp;gt;= 3 )&lt;br /&gt;
		{&lt;br /&gt;
			fps = frames / (float)timeSinceLastFrame;&lt;br /&gt;
			if( fps &amp;lt; 5 ) fps = 30;  // Handle breakpoints&lt;br /&gt;
			frames = 0;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//Initialise all app keys' states to false&lt;br /&gt;
		for( int i = 0; i &amp;lt; 320; ++i )&lt;br /&gt;
			app-&amp;gt;setKeyState(i,false);&lt;br /&gt;
&lt;br /&gt;
		// Inject inputs from SFML&lt;br /&gt;
		sf::Event Event;&lt;br /&gt;
		while (pSfmlWindow-&amp;gt;GetEvent(Event))&lt;br /&gt;
		{&lt;br /&gt;
			// Window closed&lt;br /&gt;
			if (Event.Type == sf::Event::Closed)&lt;br /&gt;
				running = false;&lt;br /&gt;
			// Key Press Event&lt;br /&gt;
			else if (Event.Type == sf::Event::KeyPressed)&lt;br /&gt;
			{	&lt;br /&gt;
				keyPressListener(Event.Key.Code);&lt;br /&gt;
			}&lt;br /&gt;
			else if(Event.Type == sf::Event::MouseMoved)&lt;br /&gt;
			{&lt;br /&gt;
				mouseMoveListener(Event.MouseMove.X,Event.MouseMove.Y);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		app-&amp;gt;keyStateHandler();&lt;br /&gt;
&lt;br /&gt;
		// Render&lt;br /&gt;
		app-&amp;gt;mainLoop( benchmark ? 60 : fps );		&lt;br /&gt;
		pSfmlWindow-&amp;gt;Display();&lt;br /&gt;
		&lt;br /&gt;
		if( benchmark &amp;amp;&amp;amp; frames == benchmarkLength ) break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(true);&lt;br /&gt;
	&lt;br /&gt;
	// Show benchmark results&lt;br /&gt;
	if( benchmark )&lt;br /&gt;
	{	&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		double avgFPS = benchmarkLength / timeSinceLastFrame;&lt;br /&gt;
		char title[256];&lt;br /&gt;
		sprintf( title, &amp;quot;Average FPS: %.2f&amp;quot;, avgFPS );&lt;br /&gt;
		&lt;br /&gt;
		//Simply write the logistics to console&lt;br /&gt;
		printf(&amp;quot;%s&amp;quot;,title);&lt;br /&gt;
		&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
//		double startTime = glfwGetTime();&lt;br /&gt;
//		while( glfwGetTime() - startTime &amp;lt; 5.0 ) {}  // Sleep&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	// Quit&lt;br /&gt;
	app-&amp;gt;release();&lt;br /&gt;
	delete app;&lt;br /&gt;
	&lt;br /&gt;
	if(pSfmlWindow-&amp;gt;IsOpened())&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
	&lt;br /&gt;
	delete pSfmlWindow;&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary|&lt;br /&gt;
name = Horde With SFML|&lt;br /&gt;
screenshot = H3DPlaceHolder.png|&lt;br /&gt;
description = This tutorial introduces the use of Horde3D with SFML|&lt;br /&gt;
version = 1.0|&lt;br /&gt;
horde3dversion = 1.0 beta|&lt;br /&gt;
released = 2011-08-20|&lt;br /&gt;
author = Balajee.R.C (Hannofcart) |&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hannofcart</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=701</id>
		<title>Tutorial - Setup Horde with SFML</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=701"/>
				<updated>2011-08-19T20:10:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hannofcart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content='''Using Horde with SFML.''' &lt;br /&gt;
&lt;br /&gt;
[http://www.sfml-dev.org/ SFML - Simple Fast Multimedia Library] is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc.&lt;br /&gt;
&lt;br /&gt;
The following example is a rewrite of main.cpp of the Horde sample - Chicago using SFML (instead of GLFW that the sample in trunk uses).&lt;br /&gt;
To test the sample, simply replace the code in main.cpp of the Chicago sample app with this code. &lt;br /&gt;
This code only requires SFML::Window library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= main.cpp for Chicago Sample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
//&lt;br /&gt;
// Horde3D&lt;br /&gt;
//   Next-Generation Graphics Engine&lt;br /&gt;
//&lt;br /&gt;
// Sample Application&lt;br /&gt;
// --------------------------------------&lt;br /&gt;
// Copyright (C) 2006-2011 Nicolas Schulz&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// This sample source file is not covered by the EPL as the rest of the SDK&lt;br /&gt;
// and may be used without any restrictions. However, the EPL's disclaimer of&lt;br /&gt;
// warranty and liability shall be in effect for this file.&lt;br /&gt;
//&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
&lt;br /&gt;
#define _CRT_SECURE_NO_WARNINGS&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SFML/Window.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;app.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Configuration&lt;br /&gt;
const int appWidth = 1024;&lt;br /&gt;
const int appHeight = 576;&lt;br /&gt;
static bool fullScreen = false;&lt;br /&gt;
static int benchmarkLength = 600;&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int, int, bool, const char* title );&lt;br /&gt;
static bool running;&lt;br /&gt;
static int mx0, my0;&lt;br /&gt;
static Application *app;&lt;br /&gt;
&lt;br /&gt;
sf::Window* pSfmlWindow;&lt;br /&gt;
sf::Clock RenderClock;&lt;br /&gt;
double timeAtLastFrame;&lt;br /&gt;
double timeSinceLastFrame;&lt;br /&gt;
double timeAtCurrentFrame;&lt;br /&gt;
&lt;br /&gt;
std::string extractAppPath( char *fullPath )&lt;br /&gt;
{&lt;br /&gt;
#ifdef __APPLE__&lt;br /&gt;
	std::string s( fullPath );&lt;br /&gt;
	for( int i = 0; i &amp;lt; 4; ++i )&lt;br /&gt;
		s = s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) );&lt;br /&gt;
	return s + &amp;quot;/../&amp;quot;;&lt;br /&gt;
#else&lt;br /&gt;
	const std::string s( fullPath );&lt;br /&gt;
	if( s.find( &amp;quot;/&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) ) + &amp;quot;/&amp;quot;;&lt;br /&gt;
	else if( s.find( &amp;quot;\\&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;\\&amp;quot; ) ) + &amp;quot;\\&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int windowCloseListener()&lt;br /&gt;
{&lt;br /&gt;
	running = false;&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyPressListener( int key )&lt;br /&gt;
{&lt;br /&gt;
	if( !running ) return;&lt;br /&gt;
&lt;br /&gt;
	int width = appWidth, height = appHeight;&lt;br /&gt;
	&lt;br /&gt;
	switch (key)&lt;br /&gt;
	{&lt;br /&gt;
		case sf::Key::Escape:&lt;br /&gt;
			running = false;&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F1:&lt;br /&gt;
			app-&amp;gt;release();		&lt;br /&gt;
			// Toggle fullscreen mode&lt;br /&gt;
			fullScreen = !fullScreen;&lt;br /&gt;
			setupWindow(appWidth, appHeight, fullScreen, app-&amp;gt;getTitle());		&lt;br /&gt;
			app-&amp;gt;init();&lt;br /&gt;
			app-&amp;gt;resize( width, height );&lt;br /&gt;
			break;&lt;br /&gt;
		&lt;br /&gt;
		//KLUDGE ALERT: &lt;br /&gt;
		//The samples in trunk use GLFW keycodes to set keystates&lt;br /&gt;
		//within Application. In order not to modify the sample code&lt;br /&gt;
		//we play nice and set the GLFW keycoded array it is interested in&lt;br /&gt;
		case sf::Key::Space:&lt;br /&gt;
			app-&amp;gt;setKeyState(32,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F3:&lt;br /&gt;
			app-&amp;gt;setKeyState(260,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F6:&lt;br /&gt;
			app-&amp;gt;setKeyState(263,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F7:&lt;br /&gt;
			app-&amp;gt;setKeyState(264,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F8:&lt;br /&gt;
			app-&amp;gt;setKeyState(265,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::LShift:&lt;br /&gt;
			app-&amp;gt;setKeyState(287,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::W:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('W'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::A:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('A'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::S:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('S'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::D:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('D'),true);&lt;br /&gt;
			break;			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void mouseMoveListener( int x, int y )&lt;br /&gt;
{&lt;br /&gt;
	if( !running )&lt;br /&gt;
	{&lt;br /&gt;
		mx0 = x; my0 = y;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	app-&amp;gt;mouseMoveEvent( (float)(x - mx0), (float)(my0 - y) );&lt;br /&gt;
	mx0 = x; my0 = y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int width, int height, bool fullscreen, const char* windowTitle = NULL)&lt;br /&gt;
{	&lt;br /&gt;
	//Initialise OpenGL context using SFML&lt;br /&gt;
	sf::WindowSettings Settings;	 // Create a settings object to initialise OpenGL context with 	&lt;br /&gt;
	Settings.DepthBits         = 24; // Request a 24 bits depth buffer&lt;br /&gt;
	Settings.StencilBits       = 8;  // Request a 8 bits stencil buffer&lt;br /&gt;
	Settings.AntialiasingLevel = 2;  // Request 2 levels of antialiasing&lt;br /&gt;
	&lt;br /&gt;
	if(!windowTitle)&lt;br /&gt;
		windowTitle = &amp;quot;SFML Chicago sample&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if (pSfmlWindow==NULL)	//First time creation&lt;br /&gt;
	{	&lt;br /&gt;
		pSfmlWindow = new sf::Window(sf::VideoMode(width, height, 32),	//Create a width * height framebuffer with 32 bits per pixel&lt;br /&gt;
									 windowTitle,						//Title for the window to be created&lt;br /&gt;
									 sf::Style::Close,					//Create a window with a titlebar and close button&lt;br /&gt;
									 Settings);							//Settings object to initialise the OpenGL context with		&lt;br /&gt;
	}&lt;br /&gt;
	else	//Reinitialisation of window&lt;br /&gt;
	{	&lt;br /&gt;
		//Close the old window&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
&lt;br /&gt;
		//Initialise a new window&lt;br /&gt;
		if(fullscreen)&lt;br /&gt;
		{	&lt;br /&gt;
			// Creating a fullscreen window with the best video mode supported&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode::GetMode(0),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Fullscreen,&lt;br /&gt;
								Settings);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{	&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode(width, height, 32),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Close,					&lt;br /&gt;
								Settings);									&lt;br /&gt;
		}		&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( int argc, char** argv )&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;Starting SFML Chicago!\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Initialize application and engine&lt;br /&gt;
	app = new Application( extractAppPath(argv[0]) );&lt;br /&gt;
&lt;br /&gt;
	// Initialize a GLFW window&lt;br /&gt;
	pSfmlWindow = NULL;&lt;br /&gt;
	if( !setupWindow( appWidth, appHeight, fullScreen, app-&amp;gt;getTitle() ) ) return -1;&lt;br /&gt;
		&lt;br /&gt;
	// Check if benchmark mode is requested&lt;br /&gt;
	bool benchmark = false;&lt;br /&gt;
	if( argc &amp;gt; 1 &amp;amp;&amp;amp; strcmp( argv[1], &amp;quot;-bm&amp;quot; ) == 0 )&lt;br /&gt;
	{	&lt;br /&gt;
		benchmark = true;&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
		//glfwDisable( GLFW_AUTO_POLL_EVENTS );&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	if ( !app-&amp;gt;init() )&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Unable to initalize engine&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Make sure you have an OpenGL 2.0 compatible graphics card&amp;quot;;&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	app-&amp;gt;resize( appWidth, appHeight );&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(false);&lt;br /&gt;
&lt;br /&gt;
	int frames = 0;&lt;br /&gt;
	float fps = 30.0f;&lt;br /&gt;
	timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
	RenderClock.Reset();	&lt;br /&gt;
	timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
	running = true;&lt;br /&gt;
	&lt;br /&gt;
	// Game loop&lt;br /&gt;
	while( running )&lt;br /&gt;
	{&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		&lt;br /&gt;
		// Calc FPS&lt;br /&gt;
		++frames;&lt;br /&gt;
		if( !benchmark &amp;amp;&amp;amp; frames &amp;gt;= 3 )&lt;br /&gt;
		{&lt;br /&gt;
			fps = frames / (float)timeSinceLastFrame;&lt;br /&gt;
			if( fps &amp;lt; 5 ) fps = 30;  // Handle breakpoints&lt;br /&gt;
			frames = 0;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//Initialise all app keys' states to false&lt;br /&gt;
		for( int i = 0; i &amp;lt; 320; ++i )&lt;br /&gt;
			app-&amp;gt;setKeyState(i,false);&lt;br /&gt;
&lt;br /&gt;
		// Inject inputs from SFML&lt;br /&gt;
		sf::Event Event;&lt;br /&gt;
		while (pSfmlWindow-&amp;gt;GetEvent(Event))&lt;br /&gt;
		{&lt;br /&gt;
			// Window closed&lt;br /&gt;
			if (Event.Type == sf::Event::Closed)&lt;br /&gt;
				running = false;&lt;br /&gt;
			// Key Press Event&lt;br /&gt;
			else if (Event.Type == sf::Event::KeyPressed)&lt;br /&gt;
			{	&lt;br /&gt;
				keyPressListener(Event.Key.Code);&lt;br /&gt;
			}&lt;br /&gt;
			else if(Event.Type == sf::Event::MouseMoved)&lt;br /&gt;
			{&lt;br /&gt;
				mouseMoveListener(Event.MouseMove.X,Event.MouseMove.Y);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		app-&amp;gt;keyStateHandler();&lt;br /&gt;
&lt;br /&gt;
		// Render&lt;br /&gt;
		app-&amp;gt;mainLoop( benchmark ? 60 : fps );		&lt;br /&gt;
		pSfmlWindow-&amp;gt;Display();&lt;br /&gt;
		&lt;br /&gt;
		if( benchmark &amp;amp;&amp;amp; frames == benchmarkLength ) break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(true);&lt;br /&gt;
	&lt;br /&gt;
	// Show benchmark results&lt;br /&gt;
	if( benchmark )&lt;br /&gt;
	{	&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		double avgFPS = benchmarkLength / timeSinceLastFrame;&lt;br /&gt;
		char title[256];&lt;br /&gt;
		sprintf( title, &amp;quot;Average FPS: %.2f&amp;quot;, avgFPS );&lt;br /&gt;
		&lt;br /&gt;
		//Simply write the logistics to console&lt;br /&gt;
		printf(&amp;quot;%s&amp;quot;,title);&lt;br /&gt;
		&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
//		double startTime = glfwGetTime();&lt;br /&gt;
//		while( glfwGetTime() - startTime &amp;lt; 5.0 ) {}  // Sleep&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	// Quit&lt;br /&gt;
	app-&amp;gt;release();&lt;br /&gt;
	delete app;&lt;br /&gt;
	&lt;br /&gt;
	if(pSfmlWindow-&amp;gt;IsOpened())&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
	&lt;br /&gt;
	delete pSfmlWindow;&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary|&lt;br /&gt;
name = Horde With SFML|&lt;br /&gt;
screenshot = H3DPlaceHolder.png|&lt;br /&gt;
description = This tutorial introduces the use of Horde3D with SFML|&lt;br /&gt;
version = 1.0|&lt;br /&gt;
horde3dversion = 1.0 beta|&lt;br /&gt;
released = 2008-07-31|&lt;br /&gt;
author = Balajee.R.C (Hannofcart) |&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hannofcart</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=700</id>
		<title>Tutorial - Setup Horde with SFML</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Tutorial_-_Setup_Horde_with_SFML&amp;diff=700"/>
				<updated>2011-08-19T20:09:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hannofcart: New page: {|  border=&amp;quot;0&amp;quot;  | {{ContentBlock|width=800|color=white |content='''Using Horde with SFML.'''   [http://www.sfml-dev.org/ SFML - Simple Fast Multimedia Library] is a free multimedia C++ API...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content='''Using Horde with SFML.''' &lt;br /&gt;
&lt;br /&gt;
[http://www.sfml-dev.org/ SFML - Simple Fast Multimedia Library] is a free multimedia C++ API that provides you low and high level access to graphics, input, audio, etc.&lt;br /&gt;
&lt;br /&gt;
The following example is a rewrite of main.cpp of the Horde sample - Chicago using SFML (instead of GLFW that the sample in trunk uses).&lt;br /&gt;
To test the sample, simply replace the code in main.cpp of the Chicago sample app with this code. &lt;br /&gt;
This code only requires SFML::Window library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= main.cpp for Chicago Sample|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
//&lt;br /&gt;
// Horde3D&lt;br /&gt;
//   Next-Generation Graphics Engine&lt;br /&gt;
//&lt;br /&gt;
// Sample Application&lt;br /&gt;
// --------------------------------------&lt;br /&gt;
// Copyright (C) 2006-2011 Nicolas Schulz&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// This sample source file is not covered by the EPL as the rest of the SDK&lt;br /&gt;
// and may be used without any restrictions. However, the EPL's disclaimer of&lt;br /&gt;
// warranty and liability shall be in effect for this file.&lt;br /&gt;
//&lt;br /&gt;
// *************************************************************************************************&lt;br /&gt;
&lt;br /&gt;
#define _CRT_SECURE_NO_WARNINGS&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;SFML/Window.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;app.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Configuration&lt;br /&gt;
const int appWidth = 1024;&lt;br /&gt;
const int appHeight = 576;&lt;br /&gt;
static bool fullScreen = false;&lt;br /&gt;
static int benchmarkLength = 600;&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int, int, bool, const char* title );&lt;br /&gt;
static bool running;&lt;br /&gt;
static int mx0, my0;&lt;br /&gt;
static Application *app;&lt;br /&gt;
&lt;br /&gt;
sf::Window* pSfmlWindow;&lt;br /&gt;
sf::Clock RenderClock;&lt;br /&gt;
double timeAtLastFrame;&lt;br /&gt;
double timeSinceLastFrame;&lt;br /&gt;
double timeAtCurrentFrame;&lt;br /&gt;
&lt;br /&gt;
std::string extractAppPath( char *fullPath )&lt;br /&gt;
{&lt;br /&gt;
#ifdef __APPLE__&lt;br /&gt;
	std::string s( fullPath );&lt;br /&gt;
	for( int i = 0; i &amp;lt; 4; ++i )&lt;br /&gt;
		s = s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) );&lt;br /&gt;
	return s + &amp;quot;/../&amp;quot;;&lt;br /&gt;
#else&lt;br /&gt;
	const std::string s( fullPath );&lt;br /&gt;
	if( s.find( &amp;quot;/&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;/&amp;quot; ) ) + &amp;quot;/&amp;quot;;&lt;br /&gt;
	else if( s.find( &amp;quot;\\&amp;quot; ) != std::string::npos )&lt;br /&gt;
		return s.substr( 0, s.rfind( &amp;quot;\\&amp;quot; ) ) + &amp;quot;\\&amp;quot;;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int windowCloseListener()&lt;br /&gt;
{&lt;br /&gt;
	running = false;&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyPressListener( int key )&lt;br /&gt;
{&lt;br /&gt;
	if( !running ) return;&lt;br /&gt;
&lt;br /&gt;
	int width = appWidth, height = appHeight;&lt;br /&gt;
	&lt;br /&gt;
	switch (key)&lt;br /&gt;
	{&lt;br /&gt;
		case sf::Key::Escape:&lt;br /&gt;
			running = false;&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F1:&lt;br /&gt;
			app-&amp;gt;release();		&lt;br /&gt;
			// Toggle fullscreen mode&lt;br /&gt;
			fullScreen = !fullScreen;&lt;br /&gt;
			setupWindow(appWidth, appHeight, fullScreen, app-&amp;gt;getTitle());		&lt;br /&gt;
			app-&amp;gt;init();&lt;br /&gt;
			app-&amp;gt;resize( width, height );&lt;br /&gt;
			break;&lt;br /&gt;
		&lt;br /&gt;
		//KLUDGE ALERT: &lt;br /&gt;
		//The samples in trunk use GLFW keycodes to set keystates&lt;br /&gt;
		//within Application. In order not to modify the sample code&lt;br /&gt;
		//we play nice and set the GLFW keycoded array it is interested in&lt;br /&gt;
		case sf::Key::Space:&lt;br /&gt;
			app-&amp;gt;setKeyState(32,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F3:&lt;br /&gt;
			app-&amp;gt;setKeyState(260,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F6:&lt;br /&gt;
			app-&amp;gt;setKeyState(263,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F7:&lt;br /&gt;
			app-&amp;gt;setKeyState(264,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::F8:&lt;br /&gt;
			app-&amp;gt;setKeyState(265,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::LShift:&lt;br /&gt;
			app-&amp;gt;setKeyState(287,true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::W:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('W'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::A:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('A'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::S:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('S'),true);&lt;br /&gt;
			break;&lt;br /&gt;
		case sf::Key::D:&lt;br /&gt;
			app-&amp;gt;setKeyState(int('D'),true);&lt;br /&gt;
			break;			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void mouseMoveListener( int x, int y )&lt;br /&gt;
{&lt;br /&gt;
	if( !running )&lt;br /&gt;
	{&lt;br /&gt;
		mx0 = x; my0 = y;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	app-&amp;gt;mouseMoveEvent( (float)(x - mx0), (float)(my0 - y) );&lt;br /&gt;
	mx0 = x; my0 = y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bool setupWindow( int width, int height, bool fullscreen, const char* windowTitle = NULL)&lt;br /&gt;
{	&lt;br /&gt;
	//Initialise OpenGL context using SFML&lt;br /&gt;
	sf::WindowSettings Settings;	 // Create a settings object to initialise OpenGL context with 	&lt;br /&gt;
	Settings.DepthBits         = 24; // Request a 24 bits depth buffer&lt;br /&gt;
	Settings.StencilBits       = 8;  // Request a 8 bits stencil buffer&lt;br /&gt;
	Settings.AntialiasingLevel = 2;  // Request 2 levels of antialiasing&lt;br /&gt;
	&lt;br /&gt;
	if(!windowTitle)&lt;br /&gt;
		windowTitle = &amp;quot;SFML Chicago sample&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	if (pSfmlWindow==NULL)	//First time creation&lt;br /&gt;
	{	&lt;br /&gt;
		pSfmlWindow = new sf::Window(sf::VideoMode(width, height, 32),	//Create a width * height framebuffer with 32 bits per pixel&lt;br /&gt;
									 windowTitle,						//Title for the window to be created&lt;br /&gt;
									 sf::Style::Close,					//Create a window with a titlebar and close button&lt;br /&gt;
									 Settings);							//Settings object to initialise the OpenGL context with		&lt;br /&gt;
	}&lt;br /&gt;
	else	//Reinitialisation of window&lt;br /&gt;
	{	&lt;br /&gt;
		//Close the old window&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
&lt;br /&gt;
		//Initialise a new window&lt;br /&gt;
		if(fullscreen)&lt;br /&gt;
		{	&lt;br /&gt;
			// Creating a fullscreen window with the best video mode supported&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode::GetMode(0),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Fullscreen,&lt;br /&gt;
								Settings);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{	&lt;br /&gt;
			pSfmlWindow-&amp;gt;Create(sf::VideoMode(width, height, 32),&lt;br /&gt;
								windowTitle,&lt;br /&gt;
								sf::Style::Close,					&lt;br /&gt;
								Settings);									&lt;br /&gt;
		}		&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( int argc, char** argv )&lt;br /&gt;
{&lt;br /&gt;
	printf(&amp;quot;Starting SFML Chicago!\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Initialize application and engine&lt;br /&gt;
	app = new Application( extractAppPath(argv[0]) );&lt;br /&gt;
&lt;br /&gt;
	// Initialize a GLFW window&lt;br /&gt;
	pSfmlWindow = NULL;&lt;br /&gt;
	if( !setupWindow( appWidth, appHeight, fullScreen, app-&amp;gt;getTitle() ) ) return -1;&lt;br /&gt;
		&lt;br /&gt;
	// Check if benchmark mode is requested&lt;br /&gt;
	bool benchmark = false;&lt;br /&gt;
	if( argc &amp;gt; 1 &amp;amp;&amp;amp; strcmp( argv[1], &amp;quot;-bm&amp;quot; ) == 0 )&lt;br /&gt;
	{	&lt;br /&gt;
		benchmark = true;&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
		//glfwDisable( GLFW_AUTO_POLL_EVENTS );&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	if ( !app-&amp;gt;init() )&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Unable to initalize engine&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; &amp;quot;Make sure you have an OpenGL 2.0 compatible graphics card&amp;quot;;&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	app-&amp;gt;resize( appWidth, appHeight );&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(false);&lt;br /&gt;
&lt;br /&gt;
	int frames = 0;&lt;br /&gt;
	float fps = 30.0f;&lt;br /&gt;
	timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
	RenderClock.Reset();	&lt;br /&gt;
	timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
	running = true;&lt;br /&gt;
	&lt;br /&gt;
	// Game loop&lt;br /&gt;
	while( running )&lt;br /&gt;
	{&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		&lt;br /&gt;
		// Calc FPS&lt;br /&gt;
		++frames;&lt;br /&gt;
		if( !benchmark &amp;amp;&amp;amp; frames &amp;gt;= 3 )&lt;br /&gt;
		{&lt;br /&gt;
			fps = frames / (float)timeSinceLastFrame;&lt;br /&gt;
			if( fps &amp;lt; 5 ) fps = 30;  // Handle breakpoints&lt;br /&gt;
			frames = 0;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//Initialise all app keys' states to false&lt;br /&gt;
		for( int i = 0; i &amp;lt; 320; ++i )&lt;br /&gt;
			app-&amp;gt;setKeyState(i,false);&lt;br /&gt;
&lt;br /&gt;
		// Inject inputs from SFML&lt;br /&gt;
		sf::Event Event;&lt;br /&gt;
		while (pSfmlWindow-&amp;gt;GetEvent(Event))&lt;br /&gt;
		{&lt;br /&gt;
			// Window closed&lt;br /&gt;
			if (Event.Type == sf::Event::Closed)&lt;br /&gt;
				running = false;&lt;br /&gt;
			// Key Press Event&lt;br /&gt;
			else if (Event.Type == sf::Event::KeyPressed)&lt;br /&gt;
			{	&lt;br /&gt;
				keyPressListener(Event.Key.Code);&lt;br /&gt;
			}&lt;br /&gt;
			else if(Event.Type == sf::Event::MouseMoved)&lt;br /&gt;
			{&lt;br /&gt;
				mouseMoveListener(Event.MouseMove.X,Event.MouseMove.Y);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		app-&amp;gt;keyStateHandler();&lt;br /&gt;
&lt;br /&gt;
		// Render&lt;br /&gt;
		app-&amp;gt;mainLoop( benchmark ? 60 : fps );		&lt;br /&gt;
		pSfmlWindow-&amp;gt;Display();&lt;br /&gt;
		&lt;br /&gt;
		if( benchmark &amp;amp;&amp;amp; frames == benchmarkLength ) break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pSfmlWindow-&amp;gt;ShowMouseCursor(true);&lt;br /&gt;
	&lt;br /&gt;
	// Show benchmark results&lt;br /&gt;
	if( benchmark )&lt;br /&gt;
	{	&lt;br /&gt;
		timeSinceLastFrame = RenderClock.GetElapsedTime();&lt;br /&gt;
		RenderClock.Reset();	&lt;br /&gt;
		timeAtCurrentFrame += timeSinceLastFrame;&lt;br /&gt;
		double avgFPS = benchmarkLength / timeSinceLastFrame;&lt;br /&gt;
		char title[256];&lt;br /&gt;
		sprintf( title, &amp;quot;Average FPS: %.2f&amp;quot;, avgFPS );&lt;br /&gt;
		&lt;br /&gt;
		//Simply write the logistics to console&lt;br /&gt;
		printf(&amp;quot;%s&amp;quot;,title);&lt;br /&gt;
		&lt;br /&gt;
		//TODO: Equivalent in SFML&lt;br /&gt;
//		double startTime = glfwGetTime();&lt;br /&gt;
//		while( glfwGetTime() - startTime &amp;lt; 5.0 ) {}  // Sleep&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	// Quit&lt;br /&gt;
	app-&amp;gt;release();&lt;br /&gt;
	delete app;&lt;br /&gt;
	&lt;br /&gt;
	if(pSfmlWindow-&amp;gt;IsOpened())&lt;br /&gt;
		pSfmlWindow-&amp;gt;Close();&lt;br /&gt;
	&lt;br /&gt;
	delete pSfmlWindow;&lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary|&lt;br /&gt;
name = Horde With SFML|&lt;br /&gt;
screenshot = H3DPlaceHolder.png|&lt;br /&gt;
description = This tutorial introduces the use of Horde3D with SFML|&lt;br /&gt;
version = 1.0|&lt;br /&gt;
horde3dversion = 1.0 beta|&lt;br /&gt;
released = 2008-07-31|&lt;br /&gt;
author = Raynaldo Rivera|&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hannofcart</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Horde3D_Wiki:Community_portal&amp;diff=699</id>
		<title>Horde3D Wiki:Community portal</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Horde3D_Wiki:Community_portal&amp;diff=699"/>
				<updated>2011-08-19T19:57:40Z</updated>
		
		<summary type="html">&lt;p&gt;Hannofcart: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__ __NOTOC__{{ContentBlock|color=orange&lt;br /&gt;
|content= '''The community portal section of the Horde3D wiki contains community contributed articles that are not part of the official documentation. Feel free to add articles to our wiki or links to external tutorials.'''}}&lt;br /&gt;
{{SpacerBlock}}&lt;br /&gt;
{{ContentBlock|&lt;br /&gt;
|header=Information, instructions and tips on using Horde3D&lt;br /&gt;
|content={{!!}}&lt;br /&gt;
==Programming Guide==&lt;br /&gt;
=== Build Instructions ===&lt;br /&gt;
#[[Building Horde3D]] - Instructions for obtaining the code and building Horde on all supported platforms&lt;br /&gt;
&lt;br /&gt;
[[Category: Tutorials]]&lt;br /&gt;
&lt;br /&gt;
===Beginner Tutorials===&lt;br /&gt;
#[[Tutorial - Hello World]] - In this section we will create a simple application that loads a character and animates it using a walk cycle.&lt;br /&gt;
#[[Tutorial - Picking]] - In this section we will demonstrate picking the node under the mouse cursor&lt;br /&gt;
#[[Tutorial - Simple HUD]] - How to use showOverlay to create a simple HUD.&lt;br /&gt;
#[[Tutorial - Setup Horde with SDL]]   - How to Setup Horde with SDL.&lt;br /&gt;
#[[Tutorial - Setup Horde with Qt4]]   - How to Setup Horde with Qt4.&lt;br /&gt;
#[[Tutorial - Setup Horde with Gtkmm]] - How to Setup Horde with Gtkmm&lt;br /&gt;
#[[Tutorial - Setup Horde with SFML]] - How to Setup Horde with SFML&lt;br /&gt;
#[[Tutorial - Stereo rendering]] - Basic outline for quad-buffered stereo rendering&lt;br /&gt;
&lt;br /&gt;
===Advanced Tutorials===&lt;br /&gt;
#[[Basic Pipeline Tutorial]] - Create your first custom pipeline.&lt;br /&gt;
#[[Procedurally generated geometry tutorial]] - How to create Horde3D compatible procedural geometry (Horde3D 1.0.0 '''Beta 3''' only!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Shader Development==&lt;br /&gt;
[[Category: Techniques]]&lt;br /&gt;
&lt;br /&gt;
===Debugging and Profiling===&lt;br /&gt;
#[[Using GPU PerfStudio]] - Quick steps to get started with GPU PerfStudio&lt;br /&gt;
&lt;br /&gt;
===Render System Basics===&lt;br /&gt;
#[[The Flexible Rendering Pipeline]] - Introduction to Horde's data-driven rendering pipelines&lt;br /&gt;
&lt;br /&gt;
===Rendering Quality===&lt;br /&gt;
#[[Gamma Correction]] - Overview of gamma correction and how to apply it with Horde&lt;br /&gt;
&lt;br /&gt;
===Shading===&lt;br /&gt;
#[[Shading Technique - Dot Product Detail Texturing]] - Using the dot product of vectors and signed textures for high frequency detail&lt;br /&gt;
#[[Shading Technique - Palette Coloring]] - Quick and dirty palette recoloration of objects&lt;br /&gt;
#[[Shading Technique - Gloss Mapping]] - Mask which areas of an object have specular highlights&lt;br /&gt;
#[[Shading Technique - Glow Mapping]] - Allow areas on an object to emit a strong glowing highlight&lt;br /&gt;
#[[Shading Technique - Fresnel]] - Using reflection and refraction&lt;br /&gt;
#[[Shading Technique - Linear Depth Buffer]] - Create a custom linear depth buffer using vertex&lt;br /&gt;
#[[Shading Technique - Terrain Shading]] - Height and slope based shading with triplanar texturing&lt;br /&gt;
&lt;br /&gt;
===Preprocessing===&lt;br /&gt;
#[[Preprocessing Technique - Distance Field Vector Textures]] - Using Adobe Photoshop to generate textures suitable for efficient vector art rendering&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Asset Creation==&lt;br /&gt;
&lt;br /&gt;
[[Category: Content Import]]&lt;br /&gt;
#[[DCC Tool Support]] - List of supported Digital Content Creation Tools&lt;br /&gt;
#[[AssetTroubleshooting|Troubleshooting]] - ''&amp;quot;Help, my model is not showing up!&amp;quot;''&lt;br /&gt;
#[[Tips and Techniques]] - Asset creation suggestions &amp;amp; ideas for Horde3d, exporting and program quirks..&lt;br /&gt;
#[[Extending ColladaConv]] - Add support for exporting cameras&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Hannofcart</name></author>	</entry>

	</feed>