bool MarmaladeSystem::CreateGameWindow(BaseGameApp *gameApp, GameWindowParams *params)
{
    ASSERT(m_window == NULL);

    MarmaladeGameWindow *window = new MarmaladeGameWindow(gameApp, this);
    ASSERT(window != NULL);

    if (!window->Create(params))
    {
        LOG_ERROR(LOGCAT_SYSTEM, "Failed to create a GameWindow.\n");
        return false;
    }

    m_window = window;

    int glVersion = s3eGLGetInt(S3E_GL_VERSION);
    int glVersionMajor = (glVersion >> 8) & 0xff;
    int glVersionMinor = glVersion & 0xff;
    int eglVersion = s3eGLGetInt(S3E_EGL_VERSION);
    int eglVersionMajor = (eglVersion >> 8) & 0xff;
    int eglVersionMinor = eglVersion & 0xff;
    int glMustSuspend = s3eGLGetInt(S3E_GL_MUST_SUSPEND);

    LOG_INFO(LOGCAT_SYSTEM, "GL Version: %d.%d\n", glVersionMajor, glVersionMinor);
    LOG_INFO(LOGCAT_SYSTEM, "EGL Version: %d.%d\n", eglVersionMajor, eglVersionMinor);
    if (glMustSuspend)
        LOG_INFO(LOGCAT_SYSTEM, "Platform may require GL context to be suspended/resumed during execution.\n");
    else
        LOG_INFO(LOGCAT_SYSTEM, "Platform will not require GL context to be suspended/resumed during execution.\n");

    LOG_INFO(LOGCAT_SYSTEM, "OpenGL renderer using the following video hardware:\n");
    LOG_INFO(LOGCAT_SYSTEM, "GL_VENDOR: %s\n", glGetString(GL_VENDOR));
    LOG_INFO(LOGCAT_SYSTEM, "GL_RENDERER: %s\n", glGetString(GL_RENDERER));
    LOG_INFO(LOGCAT_SYSTEM, "GL_VERSION: %s\n", glGetString(GL_VERSION));
    LOG_INFO(LOGCAT_SYSTEM, "GL_EXTENSIONS: %s\n", glGetString(GL_EXTENSIONS));

#ifdef GL_ES_VERSION_2_0
    if (glVersionMajor >= 2)
    {
        m_hasShaderSupport = true;

        // TOD: shader version detection? (who cares?)
        m_supportedShaderVersion = 0.0f;

        LOG_INFO(LOGCAT_SYSTEM, "Version of OpenGL supports using shaders.\n");
        LOG_INFO(LOGCAT_SYSTEM, "GL_SHADING_LANGUAGE_VERSION: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
    }
    else
    {
        m_hasShaderSupport = false;
        m_supportedShaderVersion = 0.0f;

        LOG_INFO(LOGCAT_SYSTEM, "Version of OpenGL supports fixed function pipeline only.\n");
    }
#endif

    LOG_INFO(LOGCAT_SYSTEM, "GameWindow instance is ready.\n");

    return true;
}
	//! constructor
	CIrrDeviceMarmalade::CIrrDeviceMarmalade(const SIrrlichtCreationParameters& param)
		: CIrrDeviceStub(param), Paused(false)
	{
		initKeyMap();

		CursorControl = new CMarmaladeCursor(this);

		//video::SExposedVideoData data;

		SIrrlichtCreationParameters params = param;
		params.WindowSize.Width = s3eSurfaceGetInt(S3E_SURFACE_WIDTH);
		params.WindowSize.Height = s3eSurfaceGetInt(S3E_SURFACE_HEIGHT);

		int32 glver = s3eGLGetInt(S3E_GL_VERSION);
		if(glver >= 0x200)
			VideoDriver = video::createOGLES2Driver(params, FileSystem);
		else
			VideoDriver = video::createOGLES1Driver(params, FileSystem);

        glViewport(0, 0, params.WindowSize.Width, params.WindowSize.Height);

		if (VideoDriver)
			createGUIAndScene();

		s3eDeviceRegister(S3E_DEVICE_EXIT, &do_Exit, this);
		s3eDeviceRegister(S3E_DEVICE_PAUSE, &do_Pause, this);
		s3eDeviceRegister(S3E_DEVICE_UNPAUSE, &do_Unpause, this);

		s3eKeyboardRegister(S3E_KEYBOARD_KEY_EVENT, &do_KeyEvent, this);
		s3eKeyboardRegister(S3E_KEYBOARD_CHAR_EVENT, &do_CharEvent, this);
	}
		void init2()
		{
#ifdef OXYGINE_SDL
			initGLExtensions(SDL_GL_GetProcAddress);
#endif

			Point size = getDisplaySize();
			log::messageln("display size: %d %d", size.x, size.y);


#if __S3E__
			int glversion = s3eGLGetInt(S3E_GL_VERSION);
			int major_gl = glversion >> 8;

			if (major_gl == 2)
				IVideoDriver::instance = new VideoDriverGLES20();
			else
			{
				OX_ASSERT(!"gl version should be 2");
				//IVideoDriver::instance = new VideoDriverGLES11();			
			}

#elif __FLASHPLAYER__
			{
				VideoDriverStage3D *vd = new VideoDriverStage3D();
				vd->init();
				IVideoDriver::instance = vd;
			}

			//IVideoDriver::instance = new VideoDriverNull();
#else
			IVideoDriver::instance = new VideoDriverGLES20();			
#endif


			checkGLError();

			IVideoDriver::instance->setDefaultSettings();

			checkGLError();

			Renderer::initialize();

			Resources::registerResourceType(ResAtlas::create, "atlas");
			Resources::registerResourceType(ResBuffer::create, "buffer");
			Resources::registerResourceType(ResFontBM::create, "font");
			Resources::registerResourceType(ResFontBM::createBM, "bmfc_font");
			Resources::registerResourceType(ResFontBM::createSD, "sdfont");
			Resources::registerResourceType(ResStarlingAtlas::create, "starling");

			checkGLError();
			log::messageln("oxygine initialized");


		}
Beispiel #4
0
		void init2()
		{
#ifdef OXYGINE_QT
            setlocale(LC_ALL, "POSIX");
#endif

#ifdef OXYGINE_SDL
			int missing = initGLExtensions(SDL_GL_GetProcAddress);
#endif

			Point size = getDisplaySize();
			log::messageln("display size: %d %d", size.x, size.y);


#if __S3E__
			int glversion = s3eGLGetInt(S3E_GL_VERSION);
			int major_gl = glversion >> 8;
			OX_ASSERT( major_gl == 2 && "gl version should be 2");			
			IVideoDriver::instance = new VideoDriverGLES20();
#endif

			IVideoDriver::instance = new VideoDriverGLES20();


			CHECKGL();

			IVideoDriver::instance->setDefaultSettings();

			CHECKGL();

			Renderer::initialize();

			Resources::registerResourceType(ResAtlas::create, "atlas");
			Resources::registerResourceType(ResBuffer::create, "buffer");
			Resources::registerResourceType(ResFontBM::create, "font");
			Resources::registerResourceType(ResFontBM::createBM, "bmfc_font");
			Resources::registerResourceType(ResFontBM::createSD, "sdfont");
			Resources::registerResourceType(ResStarlingAtlas::create, "starling");

			CHECKGL();
			log::messageln("oxygine initialized");
		}