/// <summary> /// /// </summary> /// <param name="primary"></param> protected void InitializeContext( RenderTarget primary ) { // Set main and current context _mainContext = (GLESContext)primary[ "GLCONTEXT" ]; LogManager.Instance.Write( _mainContext == null ? "maincontext NULL" : "maincontext NOT NULL" ); _currentContext = _mainContext; // Set primary context as active if ( _currentContext != null ) _currentContext.SetCurrent(); // intialize GL extensions and check capabilites _glSupport.InitializeExtensions(); LogManager.Instance.Write( "***************************" ); LogManager.Instance.Write( "*** GLES Renderer Started ***" ); LogManager.Instance.Write( "***************************" ); // log hardware info LogManager.Instance.Write( "Vendor: {0}", _glSupport.Vendor ); LogManager.Instance.Write( "Video Board: {0}", _glSupport.VideoCard ); LogManager.Instance.Write( "Version: {0}", _glSupport.Version ); LogManager.Instance.Write( "Extensions supported: " ); foreach ( string ext in _glSupport.Extensions ) { LogManager.Instance.Write( ext ); } // create our special program manager this._gpuProgramManager = new GLESGpuProgramManager(); // query hardware capabilites CheckCaps( primary ); // create a specialized instance, which registers itself as the singleton instance of HardwareBufferManager // use software buffers as a fallback, which operate as regular vertex arrays if ( this._rsCapabilities.HasCapability( Capabilities.VertexBuffer ) ) { hardwareBufferManager = new GLESHardwareBufferManager(); } else { hardwareBufferManager = new GLESDefaultHardwareBufferManager(); } // by creating our texture manager, singleton TextureManager will hold our implementation textureManager = new GLESTextureManager( _glSupport ); _polygonMode = GLFill; this._glInitialized = true; }