diff options
Diffstat (limited to 'source/gameengine/GamePlayer/ghost/GPG_Application.cpp')
-rw-r--r-- | source/gameengine/GamePlayer/ghost/GPG_Application.cpp | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp index b85d4b40ca8..2b357f43031 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp @@ -36,8 +36,9 @@ # include <windows.h> #endif -#include "GL/glew.h" +#include "glew-mx.h" #include "GPU_extensions.h" +#include "GPU_init_exit.h" #include "GPG_Application.h" #include "BL_BlenderDataConversion.h" @@ -99,9 +100,7 @@ extern "C" #include "GHOST_Rect.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" -# include "AUD_I3DDevice.h" -# include "AUD_IDevice.h" +# include AUD_DEVICE_H #endif static void frameTimerProc(GHOST_ITimerTask* task, GHOST_TUns64 time); @@ -113,6 +112,7 @@ GPG_Application::GPG_Application(GHOST_ISystem* system) : m_startSceneName(""), m_startScene(0), m_maggie(0), + m_kxStartScene(NULL), m_exitRequested(0), m_system(system), m_mainWindow(0), @@ -249,9 +249,15 @@ bool GPG_Application::startScreenSaverPreview( int windowWidth = rc.right - rc.left; int windowHeight = rc.bottom - rc.top; STR_String title = ""; - + GHOST_GLSettings glSettings = {0}; + + if (stereoVisual) { + glSettings.flags |= GHOST_glStereoVisual; + } + glSettings.numOfAASamples = samples; + m_mainWindow = fSystem->createWindow(title, 0, 0, windowWidth, windowHeight, GHOST_kWindowStateMinimized, - GHOST_kDrawingContextTypeOpenGL, stereoVisual, samples); + GHOST_kDrawingContextTypeOpenGL, glSettings); if (!m_mainWindow) { printf("error: could not create main window\n"); exit(-1); @@ -322,11 +328,16 @@ bool GPG_Application::startWindow( const int stereoMode, const GHOST_TUns16 samples) { + GHOST_GLSettings glSettings = {0}; bool success; // Create the main window //STR_String title ("Blender Player - GHOST"); + if (stereoVisual) + glSettings.flags |= GHOST_glStereoVisual; + glSettings.numOfAASamples = samples; + m_mainWindow = fSystem->createWindow(title, windowLeft, windowTop, windowWidth, windowHeight, GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, stereoVisual, false, samples); + GHOST_kDrawingContextTypeOpenGL, glSettings); if (!m_mainWindow) { printf("error: could not create main window\n"); exit(-1); @@ -353,10 +364,16 @@ bool GPG_Application::startEmbeddedWindow( const GHOST_TUns16 samples) { GHOST_TWindowState state = GHOST_kWindowStateNormal; + GHOST_GLSettings glSettings = {0}; + + if (stereoVisual) + glSettings.flags |= GHOST_glStereoVisual; + glSettings.numOfAASamples = samples; + if (parentWindow != 0) state = GHOST_kWindowStateEmbedded; m_mainWindow = fSystem->createWindow(title, 0, 0, 0, 0, state, - GHOST_kDrawingContextTypeOpenGL, stereoVisual, false, samples, parentWindow); + GHOST_kDrawingContextTypeOpenGL, glSettings, parentWindow); if (!m_mainWindow) { printf("error: could not create main window\n"); @@ -545,7 +562,7 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) { if (!m_engineInitialized) { - GPU_extensions_init(); + GPU_init(); bgl::InitExtensions(true); // get and set the preferences @@ -566,7 +583,7 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) bool frameRate = (SYS_GetCommandLineInt(syshandle, "show_framerate", 0) != 0); bool useLists = (SYS_GetCommandLineInt(syshandle, "displaylists", gm->flag & GAME_DISPLAY_LISTS) != 0) && GPU_display_list_support(); bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 1) != 0); - bool restrictAnimFPS = gm->flag & GAME_RESTRICT_ANIM_UPDATES; + bool restrictAnimFPS = (gm->flag & GAME_RESTRICT_ANIM_UPDATES) != 0; if (GLEW_ARB_multitexture && GLEW_VERSION_1_1) m_blendermat = (SYS_GetCommandLineInt(syshandle, "blender_material", 1) != 0); @@ -618,7 +635,7 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) if (!m_networkdevice) goto initFailed; - sound_init(m_maggie); + BKE_sound_init(m_maggie); // create a ketsjisystem (only needed for timing and stuff) m_kxsystem = new GPG_System (m_system); @@ -654,7 +671,7 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode) return m_engineInitialized; initFailed: - sound_exit(); + BKE_sound_exit(); delete m_kxsystem; delete m_networkdevice; delete m_mouse; @@ -698,7 +715,7 @@ bool GPG_Application::startEngine(void) m_sceneconverter = new KX_BlenderSceneConverter(m_maggie, m_ketsjiengine); if (m_sceneconverter) { - STR_String startscenename = m_startSceneName.Ptr(); + STR_String m_kxStartScenename = m_startSceneName.Ptr(); m_ketsjiengine->SetSceneConverter(m_sceneconverter); // if (always_use_expand_framing) @@ -710,17 +727,17 @@ bool GPG_Application::startEngine(void) if (m_startScene->gm.flag & GAME_NO_MATERIAL_CACHING) m_sceneconverter->SetCacheMaterials(false); - KX_Scene* startscene = new KX_Scene(m_keyboard, + m_kxStartScene = new KX_Scene(m_keyboard, m_mouse, m_networkdevice, - startscenename, + m_kxStartScenename, m_startScene, m_canvas); #ifdef WITH_PYTHON // some python things PyObject *gameLogic, *gameLogic_keys; - setupGamePython(m_ketsjiengine, startscene, m_maggie, NULL, &gameLogic, &gameLogic_keys, m_argc, m_argv); + setupGamePython(m_ketsjiengine, m_kxStartScene, m_maggie, NULL, &gameLogic, &gameLogic_keys, m_argc, m_argv); #endif // WITH_PYTHON //initialize Dome Settings @@ -728,13 +745,10 @@ bool GPG_Application::startEngine(void) m_ketsjiengine->InitDome(m_startScene->gm.dome.res, m_startScene->gm.dome.mode, m_startScene->gm.dome.angle, m_startScene->gm.dome.resbuf, m_startScene->gm.dome.tilt, m_startScene->gm.dome.warptext); // initialize 3D Audio Settings - AUD_I3DDevice* dev = AUD_get3DDevice(); - if (dev) - { - dev->setSpeedOfSound(m_startScene->audio.speed_of_sound); - dev->setDopplerFactor(m_startScene->audio.doppler_factor); - dev->setDistanceModel(AUD_DistanceModel(m_startScene->audio.distance_model)); - } + AUD_Device* device = BKE_sound_get_device(); + AUD_Device_setSpeedOfSound(device, m_startScene->audio.speed_of_sound); + AUD_Device_setDopplerFactor(device, m_startScene->audio.doppler_factor); + AUD_Device_setDistanceModel(device, AUD_DistanceModel(m_startScene->audio.distance_model)); #ifdef WITH_PYTHON // Set the GameLogic.globalDict from marshal'd data, so we can @@ -742,10 +756,10 @@ bool GPG_Application::startEngine(void) loadGamePythonConfig(m_pyGlobalDictString, m_pyGlobalDictString_Length); #endif m_sceneconverter->ConvertScene( - startscene, + m_kxStartScene, m_rasterizer, m_canvas); - m_ketsjiengine->AddScene(startscene); + m_ketsjiengine->AddScene(m_kxStartScene); // Create a timer that is used to kick the engine if (!m_frameTimer) { @@ -758,7 +772,7 @@ bool GPG_Application::startEngine(void) // Set the animation playback rate for ipo's and actions // the framerate below should patch with FPS macro defined in blendef.h // Could be in StartEngine set the framerate, we need the scene to do this - Scene *scene= startscene->GetBlenderScene(); // needed for macro + Scene *scene= m_kxStartScene->GetBlenderScene(); // needed for macro m_ketsjiengine->SetAnimFrameRate(FPS); } @@ -829,7 +843,7 @@ void GPG_Application::exitEngine() if (!m_engineInitialized) return; - sound_exit(); + BKE_sound_exit(); if (m_ketsjiengine) { stopEngine(); @@ -867,7 +881,7 @@ void GPG_Application::exitEngine() m_canvas = 0; } - GPU_extensions_exit(); + GPU_exit(); #ifdef WITH_PYTHON // Call this after we're sure nothing needs Python anymore (e.g., destructors) |