Explorar el Código

- Fixed a bug in Scanner
- Movig from SDL 1.2 to 1.3

Panagiotis Christopoulos Charitos hace 15 años
padre
commit
e0ec873e12
Se han modificado 7 ficheros con 78 adiciones y 55 borrados
  1. 9 13
      build/debug/Makefile
  2. 3 3
      build/debug/gen.cfg.py
  3. 7 8
      build/genmakefile.py
  4. 50 25
      src/Util/App.cpp
  5. 7 4
      src/Util/App.h
  6. 1 1
      src/Util/Common.h
  7. 1 1
      src/Util/Tokenizer/Scanner.h

+ 9 - 13
build/debug/Makefile

@@ -1,13 +1,12 @@
 CXX = g++
-COMMONFLAGS = 
-CFLAGS = $(COMMONFLAGS) -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -DPLATFORM=LINUX -DREVISION=\"`svnversion -c ../..`\" 
-PHFLAGS = $(CFLAGS) 
-LFLAGS = $(COMMONFLAGS) -rdynamic -L../../../SDL-hg/build/.libs -L../../../glew/lib -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -lSDL -Wl,-Bdynamic -lGL -ljpeg -lpng -ltiff
+CFLAGS = -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -DPLATFORM=LINUX -DREVISION=\"`svnversion -c ../..`\" 
+PHFLAGS = -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -DPLATFORM=LINUX -DREVISION=\"`svnversion -c ../..`\"  -x 
+LFLAGS = -rdynamic -L../../../SDL-hg/build/.libs -L../../../glew/lib -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -lSDL -Wl,-Bdynamic -lGL -ljpeg -lpng -ltiff
 EXECUTABLE = AnKi.bin
 INCPATH = -I../../src/Math/ -I../../src/Util/Tokenizer/ -I../../src/Misc/ -I../../src/ -I../../src/Renderer/ -I../../src/Scene/ -I../../src/Ui/ -I../../src/Resources/ -I../../src/Util/ -I../../src/Scene/Controllers/ -I../../src/Physics/ -I../../src/Renderer/BufferObjects/ -I../../src/Renderer2/ -I../../../bullet_svn/src/ -I../../../SDL-hg/include -I../../glew/include 
 SOURCES = ../../src/Util/Tokenizer//Scanner.cpp ../../src/Misc//skybox.cpp ../../src/Misc//particles.cpp ../../src/Misc//memory.cpp ../../src/Misc//collision.cpp ../../src/Misc//map.cpp ../../src//Main.cpp ../../src/Renderer//PpsHdr.cpp ../../src/Renderer//Pps.cpp ../../src/Renderer//Bs.cpp ../../src/Renderer//IsShadows.cpp ../../src/Renderer//MsEarlyz.cpp ../../src/Renderer//Renderer.cpp ../../src/Renderer//Is.cpp ../../src/Renderer//PpsLscatt.cpp ../../src/Renderer//Ms.cpp ../../src/Renderer//BulletDebuger.cpp ../../src/Renderer//Bs2.cpp ../../src/Renderer//PpsSsao.cpp ../../src/Renderer//Dbg.cpp ../../src/Scene//MeshNode.cpp ../../src/Scene//SkelNode.cpp ../../src/Scene//SkelModelNode.cpp ../../src/Scene//Light.cpp ../../src/Scene//Camera.cpp ../../src/Scene//Scene.cpp ../../src/Scene//ParticleEmitter.cpp ../../src/Scene//SceneNode.cpp ../../src/Ui//Ui.cpp ../../src/Resources//Material.cpp ../../src/Resources//ShaderProg.cpp ../../src/Resources//Texture.cpp ../../src/Resources//SkelAnim.cpp ../../src/Resources//Extension.cpp ../../src/Resources//Skeleton.cpp ../../src/Resources//ShaderPrePreprocessor.cpp ../../src/Resources//Resource.cpp ../../src/Resources//LightProps.cpp ../../src/Resources//Mesh.cpp ../../src/Util//Input.cpp ../../src/Util//App.cpp ../../src/Util//Common.cpp ../../src/Util//Util.cpp ../../src/Scene/Controllers//Controller.cpp ../../src/Scene/Controllers//SkelAnimCtrl.cpp ../../src/Physics//PhyWorld.cpp ../../src/Renderer2//Ms.cpp ../../src/Renderer2//Hdr.cpp ../../src/Renderer2//Ssao.cpp ../../src/Renderer2//Renderer.cpp 
-OBJECTS = Scanner.o skybox.o particles.o memory.o collision.o map.o Main.o PpsHdr.o Pps.o Bs.o IsShadows.o MsEarlyz.o Renderer.o Is.o PpsLscatt.o Ms.o BulletDebuger.o Bs2.o PpsSsao.o Dbg.o MeshNode.o SkelNode.o SkelModelNode.o Light.o Camera.o Scene.o ParticleEmitter.o SceneNode.o Ui.o Material.o ShaderProg.o Texture.o SkelAnim.o Extension.o Skeleton.o ShaderPrePreprocessor.o Resource.o LightProps.o Mesh.o Input.o App.o Common.o Util.o Controller.o SkelAnimCtrl.o PhyWorld.o 63.Ms.o Hdr.o Ssao.o 8.Renderer.o 
-PRECOMPILED_HEADERS = ../../src/Util/Common.gch
+OBJECTS = Scanner.o skybox.o particles.o memory.o collision.o map.o Main.o PpsHdr.o Pps.o Bs.o IsShadows.o MsEarlyz.o Renderer.o Is.o PpsLscatt.o Ms.o BulletDebuger.o Bs2.o PpsSsao.o Dbg.o MeshNode.o SkelNode.o SkelModelNode.o Light.o Camera.o Scene.o ParticleEmitter.o SceneNode.o Ui.o Material.o ShaderProg.o Texture.o SkelAnim.o Extension.o Skeleton.o ShaderPrePreprocessor.o Resource.o LightProps.o Mesh.o Input.o App.o Common.o Util.o Controller.o SkelAnimCtrl.o PhyWorld.o 36.Ms.o Hdr.o Ssao.o 60.Renderer.o 
+PRECOMPILED_HEADERS = 
 
 all: $(PRECOMPILED_HEADERS) $(SOURCES) $(EXECUTABLE)
 
@@ -16,9 +15,6 @@ $(EXECUTABLE): $(OBJECTS)
 	@$(CXX) $(OBJECTS) $(LFLAGS) -o $(EXECUTABLE)
 	@echo All Done!
 
-	@echo Pre-compiling header ../../src/Util/Common.h...
-	@$(CXX) $(INCPATH) $(PHFLAGS) ../../src/Util/Common.gch
-
 Scanner.o: ../../src/Util/Tokenizer//Scanner.cpp \
  ../../src/Util/Tokenizer//Scanner.h ../../src/Util/Common.h \
  ../../src/Misc/memory.h
@@ -3602,7 +3598,7 @@ PhyWorld.o: ../../src/Physics//PhyWorld.cpp ../../src/Physics//PhyWorld.h \
 	@echo Compiling ../../src/Physics//PhyWorld.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Physics//PhyWorld.cpp -o PhyWorld.o
 
-63.Ms.o: ../../src/Renderer2//Ms.cpp ../../src/Renderer2//Renderer.hpp \
+36.Ms.o: ../../src/Renderer2//Ms.cpp ../../src/Renderer2//Renderer.hpp \
  ../../src/Util/Common.h ../../src/Misc/memory.h ../../src/Math/Math.h \
  ../../src/Math/Vec2.h ../../src/Math/MathForwardDecls.h \
  ../../src/Math/Vec2.inl.h ../../src/Math/MathDfltHeader.h \
@@ -3758,7 +3754,7 @@ PhyWorld.o: ../../src/Physics//PhyWorld.cpp ../../src/Physics//PhyWorld.h \
  ../../src/Scene/SceneNode.h ../../src/Scene/MeshNode.h \
  ../../src/Resources/Material.h ../../src/Resources/ShaderProg.h
 	@echo Compiling ../../src/Renderer2//Ms.cpp...
-	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Renderer2//Ms.cpp -o 63.Ms.o
+	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Renderer2//Ms.cpp -o 36.Ms.o
 
 Hdr.o: ../../src/Renderer2//Hdr.cpp ../../src/Renderer2//Renderer.hpp \
  ../../src/Util/Common.h ../../src/Misc/memory.h ../../src/Math/Math.h \
@@ -3799,7 +3795,7 @@ Ssao.o: ../../src/Renderer2//Ssao.cpp ../../src/Renderer2//Renderer.hpp \
 	@echo Compiling ../../src/Renderer2//Ssao.cpp...
 	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Renderer2//Ssao.cpp -o Ssao.o
 
-8.Renderer.o: ../../src/Renderer2//Renderer.cpp \
+60.Renderer.o: ../../src/Renderer2//Renderer.cpp \
  ../../src/Renderer2//Renderer.hpp ../../src/Util/Common.h \
  ../../src/Misc/memory.h ../../src/Math/Math.h ../../src/Math/Vec2.h \
  ../../src/Math/MathForwardDecls.h ../../src/Math/Vec2.inl.h \
@@ -3817,7 +3813,7 @@ Ssao.o: ../../src/Renderer2//Ssao.cpp ../../src/Renderer2//Renderer.hpp \
  ../../src/Util/Util.h ../../src/Util/Common.h \
  ../../src/Resources/ShaderProg.h
 	@echo Compiling ../../src/Renderer2//Renderer.cpp...
-	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Renderer2//Renderer.cpp -o 8.Renderer.o
+	@$(CXX) $(INCPATH) $(CFLAGS) ../../src/Renderer2//Renderer.cpp -o 60.Renderer.o
 
 clean:
 	rm -f *.o

+ 3 - 3
build/debug/gen.cfg.py

@@ -4,10 +4,10 @@ includePaths = list(sourcePaths)
 #includePaths.extend( [ "../../../bullet_svn/src/", "/usr/include/SDL" ] )
 includePaths.extend( [ "../../../bullet_svn/src/", "../../../SDL-hg/include", "../../glew/include" ] )
 
-precompiledHeaders = [ "../../src/Util/Common.h" ]
+precompiledHeaders = []
 executableName = "AnKi.bin"
 compiler = "g++"
-commonFlags = ""
+commonFlags_ = ""
 compilerFlags = "-c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -O0 -g3 -pg -fsingle-precision-constant -D_DEBUG_ -D_TERMINAL_COLORING__ -DPLATFORM=LINUX -DREVISION=\\\"`svnversion -c ../..`\\\" "
-precompiledHeadersFlags = ""
+precompiledHeadersFlags = compilerFlags + " -x "
 linkerFlags = "-rdynamic -L../../../SDL-hg/build/.libs -L../../../glew/lib -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -lSDL -Wl,-Bdynamic -lGL -ljpeg -lpng -ltiff" # a few libs are now static

+ 7 - 8
build/genmakefile.py

@@ -10,7 +10,6 @@ sourcePaths = []
 precompiledHeaders = []
 executableName = "unamed_project"
 compiler = ""
-commonFlags = ""
 compilerFlags = ""
 precompiledHeadersFlags = ""
 linkerFlags = ""
@@ -146,7 +145,7 @@ for header in precompiledHeaders:
 	sFile = SourceFile()
 	(fnameWoExt, ext) = os.path.splitext( header )
 	sFile.cppFile = header
-	sFile.objFile = fnameWoExt + ".gch"
+	sFile.objFile = os.path.basename(fnameWoExt) + ".gch"
 	phFiles.append( sFile )
 
 
@@ -154,10 +153,9 @@ for header in precompiledHeaders:
 masterStr = ""
 
 masterStr += "CXX = " + compiler + "\n"
-masterStr += "COMMONFLAGS = " + commonFlags + "\n"
-masterStr += "CFLAGS = $(COMMONFLAGS) " + compilerFlags + "\n"
-masterStr += "PHFLAGS = $(CFLAGS) " + precompiledHeadersFlags + "\n"
-masterStr += "LFLAGS = $(COMMONFLAGS) " + linkerFlags + "\n"
+masterStr += "CFLAGS = " + compilerFlags + "\n"
+masterStr += "PHFLAGS = " + precompiledHeadersFlags + "\n"
+masterStr += "LFLAGS = " + linkerFlags + "\n"
 masterStr += "EXECUTABLE = " + executableName + "\n"
 
 masterStr += "INCPATH = "
@@ -190,8 +188,9 @@ masterStr += "\t@echo All Done!\n\n"
 
 
 for header in phFiles:
-	dependStr = getCommandOutput( compiler + " -MM " + compilerFlags + " " + precompiledHeadersFlags + " " + header.cppFile )
-	#masterStr += dependStr.replace( header.fname_wo_ext + ".o", header.fname + ".gch" )
+  #            getCommandOutput( compiler + " -MM " + compilerFlags + " " + source_file.cppFile + " -MT " + source_file.objFile )
+	dependStr = getCommandOutput( compiler + " -MM " + compilerFlags + " " + header.cppFile + " -MT " + header.objFile )
+	masterStr += dependStr
 	masterStr += "\t@echo Pre-compiling header " + header.cppFile + "...\n"
 	masterStr += "\t@$(CXX) $(INCPATH) $(PHFLAGS) " + header.objFile + "\n\n"
 

+ 50 - 25
src/Util/App.cpp

@@ -24,6 +24,8 @@ App::App( int /*argc*/, char* /*argv*/[] )
 	/*windowW = 1440;
 	windowH = 900;*/
 
+	fullScreenFlag = false;
+
 	terminalColoringEnabled = true;
 
 	timerTick = 1000/40; // in ms. 1000/Hz
@@ -37,31 +39,40 @@ App::App( int /*argc*/, char* /*argv*/[] )
 void App::initWindow()
 {
 	INFO( "SDL window initializing..." );
+
 	if( SDL_Init(SDL_INIT_VIDEO) < 0 )
 		FATAL( "Failed to init SDL_VIDEO" );
 
 	// print driver name
-	char charBuff [256];
-	if( SDL_VideoDriverName(charBuff, sizeof(charBuff)) != NULL )
+	const char* driverName = SDL_GetCurrentVideoDriver();
+	if( driverName != NULL )
 	{
-		INFO( "Video driver name: " << charBuff );
+		INFO( "Video driver name: " << driverName );
 	}
 	else
 	{
 		ERROR( "Failed to obtain the video driver name" );
 	}
 
-	// Chose GL ver
+	// set GL attribs
 	SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 );
 	SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 1 );
+	SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 8 ); // WARNING: Set this low only in deferred shading
+	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
+	SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
+
+	// OpenWindow
+	windowId = SDL_CreateWindow( "AnKi Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, windowW, windowH, SDL_WINDOW_OPENGL |
+	                             SDL_WINDOW_SHOWN );
+
+	if( !windowId )
+		FATAL( "Cannot create main window" );
+
+	glContext = SDL_GL_CreateContext( windowId );
 
-	// get desktop size
-	const SDL_VideoInfo* info = SDL_GetVideoInfo();
-	desktopW = info->current_w;
-	desktopH = info->current_h;
 
 	// the icon
-	iconImage = SDL_LoadBMP("gfx/icon.bmp");
+	/*iconImage = SDL_LoadBMP("gfx/icon.bmp");
 	if( iconImage == NULL )
 	{
 		ERROR( "Cannot load window icon" );
@@ -71,18 +82,7 @@ void App::initWindow()
 		Uint32 colorkey = SDL_MapRGB( iconImage->format, 255, 0, 255 );
 		SDL_SetColorKey( iconImage, SDL_SRCCOLORKEY, colorkey );
 		SDL_WM_SetIcon( iconImage, NULL );
-	}
-
-	// set GL attribs
-	SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 8 ); // WARNING: Set this only in deferred shading
-	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
-	SDL_GL_SetAttribute( SDL_GL_ACCELERATED_VISUAL, 1 );
-
-	// set the surface
-	mainSurf = SDL_SetVideoMode( windowW, windowH, 24, SDL_HWSURFACE | SDL_OPENGL );
-
-	SDL_WM_SetCaption( "AnKi Engine", NULL );
-
+	}*/
 
 	INFO( "SDL window initialization ends" );
 }
@@ -93,7 +93,9 @@ void App::initWindow()
 //=====================================================================================================================================
 void App::togleFullScreen()
 {
-	SDL_WM_ToggleFullScreen( mainSurf );
+	//SDL_WM_ToggleFullScreen( mainSurf );
+	SDL_SetWindowFullscreen( windowId, fullScreenFlag );
+	fullScreenFlag = !fullScreenFlag;
 }
 
 
@@ -102,8 +104,8 @@ void App::togleFullScreen()
 //=====================================================================================================================================
 void App::swapBuffers()
 {
-	SDL_GL_SwapBuffers();
-	//SDL_GL_SwapWindow(mainwindow);
+	//SDL_GL_SwapBuffers();
+	SDL_GL_SwapWindow( windowId );
 }
 
 
@@ -112,7 +114,8 @@ void App::swapBuffers()
 //=====================================================================================================================================
 void App::quitApp( int code )
 {
-	SDL_FreeSurface( mainSurf );
+	SDL_GL_DeleteContext( glContext );
+	SDL_DestroyWindow( windowId );
 	SDL_Quit();
 	exit(code);
 }
@@ -164,6 +167,28 @@ void App::printAppInfo()
 }
 
 
+//=====================================================================================================================================
+// getDesktopWidth                                                                                                                    =
+//=====================================================================================================================================
+uint App::getDesktopWidth() const
+{
+	SDL_DisplayMode mode;
+	SDL_GetDesktopDisplayMode( &mode );
+	return mode.w;
+}
+
+
+//=====================================================================================================================================
+// getDesktopHeight                                                                                                                   =
+//=====================================================================================================================================
+uint App::getDesktopHeight() const
+{
+	SDL_DisplayMode mode;
+	SDL_GetDesktopDisplayMode( &mode );
+	return mode.h;
+}
+
+
 //=====================================================================================================================================
 // getTicks                                                                                                                           =
 //=====================================================================================================================================

+ 7 - 4
src/Util/App.h

@@ -1,6 +1,7 @@
 #ifndef _APP_H_
 #define _APP_H_
 
+#include <SDL.h>
 #include "Common.h"
 
 
@@ -10,8 +11,6 @@
  */
 class App
 {
-	PROPERTY_R( uint, desktopW, getDesktopWidth ) ///< @ref PROPERTY_R : The desktop width at App initialization
-	PROPERTY_R( uint, desktopH, getDesktopHeight ) ///< @ref PROPERTY_R : The desktop height at App initialization
 	PROPERTY_R( uint, windowW, getWindowWidth ) ///< @ref PROPERTY_R : The main window width
 	PROPERTY_R( uint, windowH, getWindowHeight ) ///< @ref PROPERTY_R : The main window height
 	PROPERTY_R( bool, terminalColoringEnabled, isTerminalColoringEnabled ) ///< @ref PROPERTY_R : Terminal coloring for Unix terminals. Default is enabled
@@ -22,8 +21,9 @@ class App
 	private:
 		static bool isCreated; ///< A flag to ensure one @ref App instance
 		uint time;
-		class SDL_Surface* mainSurf; ///< SDL stuff
-		class SDL_Surface* iconImage; ///< SDL stuff
+		SDL_WindowID windowId;
+		SDL_GLContext glContext;
+		bool fullScreenFlag;
 
 	public:
 		uint timerTick;
@@ -37,6 +37,9 @@ class App
 		void swapBuffers();
 		static void printAppInfo();
 
+		uint getDesktopWidth() const;
+		uint getDesktopHeight() const;
+
 		/**
 		 * @return Returns the number of milliseconds since SDL library initialization
 		 */

+ 1 - 1
src/Util/Common.h

@@ -87,7 +87,7 @@ extern string getFunctionFromPrettyFunction( const char* pretty_function );
 #define FATAL( x ) { GENERAL_ERR( "Fatal", x << ". Bye!", COL_FATAL ); exit( EXIT_FAILURE ); }
 
 /// Show an info message
-#define INFO( x ) { GENERAL_MSG( "Info", x, COL_INFO ) }
+#define INFO( x ) GENERAL_MSG( "Info", x, COL_INFO )
 
 /// Reverse assertion
 #ifdef _DEBUG_

+ 1 - 1
src/Util/Tokenizer/Scanner.h

@@ -177,7 +177,7 @@ class Scanner
 		// input
 		ifstream  inFstream; ///< The file stream. Used if the @ref Scanner is initiated using @ref loadFile
 		istream*  inStream; ///< Points to either @ref inFstream or an external std::istream
-		char      scriptName[64]; ///< The name of the input stream. Mostly used for the error messages inside the @ref Scanner
+		char      scriptName[512]; ///< The name of the input stream. Mostly used for the error messages inside the @ref Scanner
 
 	//===================================================================================================================================
 	// public funcs                                                                                                                     =