/// <summary> /// Initialise the scene /// </summary> /// <param name="window">The IWin32Window to render to. System.Windows.Forms.Form implements IWin32Window</param> /// <param name="target">The render target</param> /// <param name="resolution">The resolution to render in</param> public void Initialise(IWin32Window window, EnumRenderTarget target, Resolution resolution) { try { R3DRENDERTARGET r3dtarget = convertRenderTarget( target ); Engine.R3DEngine.Inf_SetRenderTarget(window.Handle.ToInt32(), ref r3dtarget); if(resolution != Resolution.Automatic) { Engine.R3DEngine.Inf_ForceResolution(resolution.Width, resolution.Height, resolution.ColourDepth); } Engine.R3DEngine.InitializeMe( false ); R3DColor color = new R3DColor(); color.r = 30; color.g = 30; color.b = 140; Engine.Pipeline.SetBackColor(ref color); Engine.Pipeline.SetDithering(true); Engine.Pipeline.SetFillMode(R3D089_VBasic.R3DFILLMODE.R3DFILLMODE_SOLID); R3DColor white = new R3DColor(); white.r = 128; white.b = 128; white.g = 128; Engine.Pipeline.SetAmbientLight(ref white); Engine.Pipeline.SetColorKeying(true); Engine.Pipeline.SetSpecular(true); Engine.Pipeline.SetMipMapping(false); Engine.Pipeline.SetShadeMode(R3DSHADEMODE.R3DSHADEMODE_GOURAUD); Engine.Pipeline.SetTextureFilter(R3DTEXTUREFILTER.R3DTEXTUREFILTER_LINEARFILTER); _renderTarget = window; } catch(Exception e) { throw new EngineInitialisationException(e); } }
/// <summary> /// Initialise the scene /// </summary> /// <param name="window">The IWin32Window to render to. System.Windows.Forms.Form implements IWin32Window</param> /// <param name="target">The render target</param> /// <param name="resolution">The resolution to render in</param> public void Initialise(IWin32Window window, EnumRenderTarget target, Resolution resolution) { try { R3DRENDERTARGET r3dtarget = convertRenderTarget(target); Engine.R3DEngine.Inf_SetRenderTarget(window.Handle.ToInt32(), ref r3dtarget); if (resolution != Resolution.Automatic) { Engine.R3DEngine.Inf_ForceResolution(resolution.Width, resolution.Height, resolution.ColourDepth); } Engine.R3DEngine.InitializeMe(false); R3DColor color = new R3DColor(); color.r = 30; color.g = 30; color.b = 140; Engine.Pipeline.SetBackColor(ref color); Engine.Pipeline.SetDithering(true); Engine.Pipeline.SetFillMode(R3D089_VBasic.R3DFILLMODE.R3DFILLMODE_SOLID); R3DColor white = new R3DColor(); white.r = 128; white.b = 128; white.g = 128; Engine.Pipeline.SetAmbientLight(ref white); Engine.Pipeline.SetColorKeying(true); Engine.Pipeline.SetSpecular(true); Engine.Pipeline.SetMipMapping(false); Engine.Pipeline.SetShadeMode(R3DSHADEMODE.R3DSHADEMODE_GOURAUD); Engine.Pipeline.SetTextureFilter(R3DTEXTUREFILTER.R3DTEXTUREFILTER_LINEARFILTER); _renderTarget = window; } catch (Exception e) { throw new EngineInitialisationException(e); } }
/// <summary> /// Converts Strive.Rendering.RenderTarget instances to the appropriate underlying instance /// </summary> internal R3DRENDERTARGET this[EnumRenderTarget target] { get { switch (target) { case EnumRenderTarget.Window: { return(R3DRENDERTARGET.R3DRENDERTARGET_WINDOW); } case EnumRenderTarget.FullScreen: { return(R3DRENDERTARGET.R3DRENDERTARGET_FULLSCREEN); } case EnumRenderTarget.PictureBox: { return(R3DRENDERTARGET.R3DRENDERTARGET_PICTUREBOX); } } return(new R3DRENDERTARGET()); } set { } }
/// <summary> /// Initialise the scene /// </summary> /// <param name="window">The IWin32Window to render to. System.Windows.Forms.Form implements IWin32Window</param> /// <param name="target">The render target</param> /// <param name="resolution">The resolution to render in</param> public void Initialise(IWin32Window window, EnumRenderTarget target, Resolution resolution) { if (TV3DEngine != null) { Terminate(); } TV3DEngine = new TVEngine(); try { Engine.TV3DEngine.Init3DWindowedMode(window.Handle.ToInt32(), true); //TV3DEngine.Init3DFullscreen( 800, 600, 16, true, false, CONST_TV_DEPTHMODE.TV_DEPTHBUFFER_BESTBUFFER, 1, 0 ); _renderTarget = window; } catch (Exception e) { throw new EngineInitialisationException(e); } TV3DEngine.SetAngleSystem(CONST_TV_ANGLE.TV_ANGLE_DEGREE); TV3DEngine.SetVSync(true); TV3DEngine.DisplayFPS = true; TV3DScene = new TVScene(); TV3DScene.SetDepthBuffer(CONST_TV_DEPTHBUFFER.TV_WBUFFER); //TV3DScene.SetRenderMode( CONST_TV_RENDERMODE.TV_LINE ); TV3DScene.SetTextureFilter(CONST_TV_TEXTUREFILTER.TV_FILTER_ANISOTROPIC); TexFactory = new TVTextureFactory(); Screen2DImmediate = new TVScreen2DImmediate(); // TODO: this hax setting is to allow for clearing part of a rendersurface // would be nice if there is a better way.... Screen2DImmediate.SETTINGS_SetBlendingMode(DxVBLibA.CONST_D3DBLEND.D3DBLEND_ZERO, DxVBLibA.CONST_D3DBLEND.D3DBLEND_ONE, false); Screen2DText = new TVScreen2DText(); LightEngine = new TVLightEngine(); Gl = new TVGlobals(); Camera = new TVCamera(); Atmosphere = new TVAtmosphere(); Atmosphere.Fog_SetParameters(100F, 10000F, 0.0005F); Atmosphere.Fog_Enable(true); Input = new TVInputEngine(); FontIndex = Screen2DText.TextureFont_Create("font", "Verdana", 20, true, false, false, false); }
/// <summary> /// Converts Strive.Rendering.R3D.RenderTarget instances to the appropriate underlying instance /// </summary> internal R3DRENDERTARGET convertRenderTarget( EnumRenderTarget target ) { switch(target) { case EnumRenderTarget.Window: { return R3DRENDERTARGET.R3DRENDERTARGET_WINDOW; } case EnumRenderTarget.FullScreen: { return R3DRENDERTARGET.R3DRENDERTARGET_FULLSCREEN; } case EnumRenderTarget.PictureBox: { return R3DRENDERTARGET.R3DRENDERTARGET_PICTUREBOX; } } return new R3DRENDERTARGET(); }
/// <summary> /// Initialise the scene /// </summary> /// <param name="window">The IWin32Window to render to. System.Windows.Forms.Form implements IWin32Window</param> /// <param name="target">The render target</param> /// <param name="resolution">The resolution to render in</param> public void Initialise(IWin32Window window, EnumRenderTarget target, Resolution resolution) { if ( TV3DEngine != null ) { Terminate(); } TV3DEngine = new TVEngine(); try { Engine.TV3DEngine.Init3DWindowedMode(window.Handle.ToInt32(), true); //TV3DEngine.Init3DFullscreen( 800, 600, 16, true, false, CONST_TV_DEPTHMODE.TV_DEPTHBUFFER_BESTBUFFER, 1, 0 ); _renderTarget = window; } catch(Exception e) { throw new EngineInitialisationException(e); } TV3DEngine.SetAngleSystem( CONST_TV_ANGLE.TV_ANGLE_DEGREE ); TV3DEngine.SetVSync( true ); TV3DEngine.DisplayFPS = true; TV3DScene = new TVScene(); TV3DScene.SetDepthBuffer( CONST_TV_DEPTHBUFFER.TV_WBUFFER ); //TV3DScene.SetRenderMode( CONST_TV_RENDERMODE.TV_LINE ); TV3DScene.SetTextureFilter( CONST_TV_TEXTUREFILTER.TV_FILTER_ANISOTROPIC ); TexFactory = new TVTextureFactory(); Screen2DImmediate = new TVScreen2DImmediate(); // TODO: this hax setting is to allow for clearing part of a rendersurface // would be nice if there is a better way.... Screen2DImmediate.SETTINGS_SetBlendingMode( DxVBLibA.CONST_D3DBLEND.D3DBLEND_ZERO, DxVBLibA.CONST_D3DBLEND.D3DBLEND_ONE, false ); Screen2DText = new TVScreen2DText(); LightEngine = new TVLightEngine(); Gl = new TVGlobals(); Camera = new TVCamera(); Atmosphere = new TVAtmosphere(); Atmosphere.Fog_SetParameters( 100F, 10000F, 0.0005F ); Atmosphere.Fog_Enable( true ); Input = new TVInputEngine(); FontIndex = Screen2DText.TextureFont_Create("font", "Verdana", 20, true, false, false, false); }