[Agate-svn-commit] SF.net SVN: agate:[1394] trunk
Status: Alpha
Brought to you by:
kanato
From: <ka...@us...> - 2014-06-24 05:38:47
|
Revision: 1394 http://sourceforge.net/p/agate/code/1394 Author: kanato Date: 2014-06-24 05:38:38 +0000 (Tue, 24 Jun 2014) Log Message: ----------- Fix the missing texture issue by copying the ortho projection when a new 2D shader is set. Fix colors when lighting is enabled in Direct3D. Modified Paths: -------------- trunk/AgateLib/DisplayLib/DisplayCapsInfo.cs trunk/AgateLib/DisplayLib/ImplementationBase/DisplayImpl.cs trunk/AgateLib/DisplayLib/Shaders/Lighting2D.cs trunk/Drivers/AgateOTK/Legacy/FixedFunction/OTK_FF_Lighting2D.cs trunk/Drivers/AgateSDX/DrawBuffer.cs trunk/Drivers/AgateSDX/SDX_VertexBuffer.cs trunk/Drivers/AgateSDX/Shaders/FixedFunction/SDX_FF_Lighting2D.cs trunk/Tests/DisplayTests/FullScreen.cs trunk/Tests/Shaders/LightingTest/LightingTest.cs Modified: trunk/AgateLib/DisplayLib/DisplayCapsInfo.cs =================================================================== --- trunk/AgateLib/DisplayLib/DisplayCapsInfo.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/AgateLib/DisplayLib/DisplayCapsInfo.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -1,118 +1,118 @@ -// The contents of this file are subject to the Mozilla Public License -// Version 1.1 (the "License"); you may not use this file except in -// compliance with the License. You may obtain a copy of the License at -// http://www.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" -// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -// License for the specific language governing rights and limitations -// under the License. -// -// The Original Code is AgateLib. -// -// The Initial Developer of the Original Code is Erik Ylvisaker. -// Portions created by Erik Ylvisaker are Copyright (C) 2006-2011. -// All Rights Reserved. -// -// Contributor(s): Erik Ylvisaker -// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using AgateLib.Geometry; - -namespace AgateLib.DisplayLib -{ - /// <summary> - /// Class which can be used to query information about what features are supported - /// by the display driver. - /// </summary> - public class DisplayCapsInfo - { - internal DisplayCapsInfo() - { } - - /// <summary> - /// Indicates whether or not full screen windows can be created. - /// </summary> - public bool SupportsFullScreen - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.FullScreen); } - } - /// <summary> - /// Indicates whether or not the screen resolution can be changed. - /// If the Display driver supports full screen but not mode switching, - /// then a DisplayWindow which is created with as a full screen window - /// cannot change resolutions after it is initially set. - /// </summary> - public bool SupportsFullScreenModeSwitching - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.FullScreenModeSwitching); } - } - /// <summary> - /// Indicates whether setting Surface.SetScale has any visible effect. - /// </summary> - public bool SupportsScaling - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.Scaling); } - } - /// <summary> - /// Indicates whether setting Surface.RotationAngle has any visible effect. - /// </summary> - public bool SupportsRotation - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.Rotation); } - } - /// <summary> - /// Indicates whether setting Surface.Color has any visible effect. - /// </summary> - public bool SupportsColor - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.Color); } - } - /// <summary> - /// Indicates whether Surface gradients are supported. If not, then setting Surface.ColorGradient - /// color of a surface is the same as setting the Surface.Color with the average of the - /// gradient colors. - /// </summary> - public bool SupportsGradient - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.Gradient); } - } - /// <summary> - /// Indicates whether setting Surface.Alpha has any visible effect. - /// </summary> - public bool SupportsSurfaceAlpha - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.SurfaceAlpha); } - } - /// <summary> - /// Indicates whether the alpha channel in surface pixels is used. - /// </summary> - public bool SupportsPixelAlpha - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.PixelAlpha); } - } - /// <summary> - /// Indicates whether there is hardware acceleration available for 2D and 3D drawing. - /// </summary> - public bool IsHardwareAccelerated - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.IsHardwareAccelerated); } - } - /// <summary> - /// Indicates whether or not vertex/pixel shaders are supported. - /// </summary> - public bool SupportsCustomShaders - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.CustomShaders); } - } - /// <summary> - /// Indicates which shader language is supported. - /// </summary> - public AgateLib.DisplayLib.Shaders.ShaderLanguage ShaderLanguage - { +// The contents of this file are subject to the Mozilla Public License +// Version 1.1 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://www.mozilla.org/MPL/ +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations +// under the License. +// +// The Original Code is AgateLib. +// +// The Initial Developer of the Original Code is Erik Ylvisaker. +// Portions created by Erik Ylvisaker are Copyright (C) 2006-2011. +// All Rights Reserved. +// +// Contributor(s): Erik Ylvisaker +// +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using AgateLib.Geometry; + +namespace AgateLib.DisplayLib +{ + /// <summary> + /// Class which can be used to query information about what features are supported + /// by the display driver. + /// </summary> + public class DisplayCapsInfo + { + internal DisplayCapsInfo() + { } + + /// <summary> + /// Indicates whether or not full screen windows can be created. + /// </summary> + public bool SupportsFullScreen + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.FullScreen); } + } + /// <summary> + /// Indicates whether or not the screen resolution can be changed. + /// If the Display driver supports full screen but not mode switching, + /// then a DisplayWindow which is created with as a full screen window + /// cannot change resolutions after it is initially set. + /// </summary> + public bool SupportsFullScreenModeSwitching + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.FullScreenModeSwitching); } + } + /// <summary> + /// Indicates whether setting Surface.SetScale has any visible effect. + /// </summary> + public bool SupportsScaling + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.Scaling); } + } + /// <summary> + /// Indicates whether setting Surface.RotationAngle has any visible effect. + /// </summary> + public bool SupportsRotation + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.Rotation); } + } + /// <summary> + /// Indicates whether setting Surface.Color has any visible effect. + /// </summary> + public bool SupportsColor + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.Color); } + } + /// <summary> + /// Indicates whether Surface gradients are supported. If not, then setting Surface.ColorGradient + /// color of a surface is the same as setting the Surface.Color with the average of the + /// gradient colors. + /// </summary> + public bool SupportsGradient + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.Gradient); } + } + /// <summary> + /// Indicates whether setting Surface.Alpha has any visible effect. + /// </summary> + public bool SupportsSurfaceAlpha + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.SurfaceAlpha); } + } + /// <summary> + /// Indicates whether the alpha channel in surface pixels is used. + /// </summary> + public bool SupportsPixelAlpha + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.PixelAlpha); } + } + /// <summary> + /// Indicates whether there is hardware acceleration available for 2D and 3D drawing. + /// </summary> + public bool IsHardwareAccelerated + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.IsHardwareAccelerated); } + } + /// <summary> + /// Indicates whether or not vertex/pixel shaders are supported. + /// </summary> + public bool SupportsCustomShaders + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.CustomShaders); } + } + /// <summary> + /// Indicates which shader language is supported. + /// </summary> + public AgateLib.DisplayLib.Shaders.ShaderLanguage ShaderLanguage + { get { var shad = Display.Impl.SupportedShaderLanguages.ToList(); @@ -121,90 +121,90 @@ return Shaders.ShaderLanguage.None; else return shad[0]; - } - } - /// <summary> - /// Indicates whether the driver can create a bitmap font from an operating - /// system font. - /// </summary> - public bool CanCreateBitmapFont - { - get { return Display.Impl.CapsBool(DisplayBoolCaps.CanCreateBitmapFont); } - } - - /// <summary> - /// Gets the maximum size a surface can be. - /// </summary> - public Size MaxSurfaceSize - { - get { return Display.Impl.CapsSize(DisplaySizeCaps.MaxSurfaceSize); } - } - } - - /// <summary> - /// Enum which is used to specify a Caps value which should return a Size object. - /// </summary> - public enum DisplaySizeCaps - { - /// <summary> - /// Value for getting the maximum supported surface size. - /// </summary> - MaxSurfaceSize, - } - /// <summary> - /// Enum which is used to specify a Caps value which should return a logical value. - /// </summary> - public enum DisplayBoolCaps - { - /// <summary> - /// Indicates whether or not full screen windows can be created. - /// </summary> - FullScreen, - /// <summary> - /// Indicates whether or not the screen resolution can be changed. - /// If the Display driver supports full screen but not mode switching, - /// then a DisplayWindow which is created with as a full screen window - /// cannot change resolutions after it is initially set. - /// </summary> - FullScreenModeSwitching, - /// <summary> - /// Indicates whether setting Surface.SetScale has any visible effect. - /// </summary> - Scaling, - /// <summary> - /// Indicates whether setting Surface.RotationAngle has any visible effect. - /// </summary> - Rotation, - /// <summary> - /// Indicates whether setting Surface.Color has any visible effect. - /// </summary> - Color, - /// <summary> - /// Indicates whether Surface gradients are supported. If not, then setting Surface.ColorGradient - /// color of a surface is the same as setting the Surface.Color with the average of the - /// gradient colors. - /// </summary> - Gradient, - /// <summary> - /// Indicates whether setting Surface.Alpha has any visible effect. - /// </summary> - SurfaceAlpha, - /// <summary> - /// Indicates whether the alpha channel in surface pixels is used. - /// </summary> - PixelAlpha, - /// <summary> - /// Indicates whether there is hardware acceleration available for 2D scaling and rotations. - /// </summary> - IsHardwareAccelerated, - /// <summary> - /// Indicates whether or not vertex/pixel shaders are supported. - /// </summary> - CustomShaders, - /// <summary> - /// Indicates whether the driver can create a bitmap font from an operating - /// system font. - /// </summary> - CanCreateBitmapFont, - } -} + } + } + /// <summary> + /// Indicates whether the driver can create a bitmap font from an operating + /// system font. + /// </summary> + public bool CanCreateBitmapFont + { + get { return Display.Impl.CapsBool(DisplayBoolCaps.CanCreateBitmapFont); } + } + + /// <summary> + /// Gets the maximum size a surface can be. + /// </summary> + public Size MaxSurfaceSize + { + get { return Display.Impl.CapsSize(DisplaySizeCaps.MaxSurfaceSize); } + } + } + + /// <summary> + /// Enum which is used to specify a Caps value which should return a Size object. + /// </summary> + public enum DisplaySizeCaps + { + /// <summary> + /// Value for getting the maximum supported surface size. + /// </summary> + MaxSurfaceSize, + } + /// <summary> + /// Enum which is used to specify a Caps value which should return a logical value. + /// </summary> + public enum DisplayBoolCaps + { + /// <summary> + /// Indicates whether or not full screen windows can be created. + /// </summary> + FullScreen, + /// <summary> + /// Indicates whether or not the screen resolution can be changed. + /// If the Display driver supports full screen but not mode switching, + /// then a DisplayWindow which is created with as a full screen window + /// cannot change resolutions after it is initially set. + /// </summary> + FullScreenModeSwitching, + /// <summary> + /// Indicates whether setting Surface.SetScale has any visible effect. + /// </summary> + Scaling, + /// <summary> + /// Indicates whether setting Surface.RotationAngle has any visible effect. + /// </summary> + Rotation, + /// <summary> + /// Indicates whether setting Surface.Color has any visible effect. + /// </summary> + Color, + /// <summary> + /// Indicates whether Surface gradients are supported. If not, then setting Surface.ColorGradient + /// color of a surface is the same as setting the Surface.Color with the average of the + /// gradient colors. + /// </summary> + Gradient, + /// <summary> + /// Indicates whether setting Surface.Alpha has any visible effect. + /// </summary> + SurfaceAlpha, + /// <summary> + /// Indicates whether the alpha channel in surface pixels is used. + /// </summary> + PixelAlpha, + /// <summary> + /// Indicates whether there is hardware acceleration available for 2D scaling and rotations. + /// </summary> + IsHardwareAccelerated, + /// <summary> + /// Indicates whether or not vertex/pixel shaders are supported. + /// </summary> + CustomShaders, + /// <summary> + /// Indicates whether the driver can create a bitmap font from an operating + /// system font. + /// </summary> + CanCreateBitmapFont, + } +} Modified: trunk/AgateLib/DisplayLib/ImplementationBase/DisplayImpl.cs =================================================================== --- trunk/AgateLib/DisplayLib/ImplementationBase/DisplayImpl.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/AgateLib/DisplayLib/ImplementationBase/DisplayImpl.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -705,12 +705,21 @@ if (mShader != null) mShader.EndInternal(); + if (value is IShader2D && mShader is IShader2D) + TransferShader2DSettings((IShader2D)value, (IShader2D)mShader); + mShader = value; mShader.BeginInternal(); } } + private void TransferShader2DSettings(IShader2D target, IShader2D src) + { + if (target.CoordinateSystem.IsEmpty) + target.CoordinateSystem = src.CoordinateSystem; + } + protected internal abstract bool GetRenderState(RenderStateBool renderStateBool); protected internal abstract void SetRenderState(RenderStateBool renderStateBool, bool value); Modified: trunk/AgateLib/DisplayLib/Shaders/Lighting2D.cs =================================================================== --- trunk/AgateLib/DisplayLib/Shaders/Lighting2D.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/AgateLib/DisplayLib/Shaders/Lighting2D.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -85,6 +85,8 @@ return; } } + + Lights.Add(ptLight); } Modified: trunk/Drivers/AgateOTK/Legacy/FixedFunction/OTK_FF_Lighting2D.cs =================================================================== --- trunk/Drivers/AgateOTK/Legacy/FixedFunction/OTK_FF_Lighting2D.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Drivers/AgateOTK/Legacy/FixedFunction/OTK_FF_Lighting2D.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -86,9 +86,7 @@ GL.MatrixMode(MatrixMode.Projection); GL.LoadIdentity(); GL.Ortho(coords.Left, coords.Right, coords.Bottom, coords.Top, -1, 1); - - GL.Enable(EnableCap.Lighting); - + float[] array = new float[4]; GL.Enable(EnableCap.Lighting); Modified: trunk/Drivers/AgateSDX/DrawBuffer.cs =================================================================== --- trunk/Drivers/AgateSDX/DrawBuffer.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Drivers/AgateSDX/DrawBuffer.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -100,6 +100,10 @@ mDevice.SetDeviceStateTexture(mTexture); mDevice.AlphaBlend = mAlphaBlend; + mDevice.AlphaArgument1 = TextureArgument.Texture; + mDevice.AlphaArgument2 = TextureArgument.Diffuse; + mDevice.AlphaOperation = TextureOperation.Modulate; + mDevice.SetVertexDeclarationForSurfaces(); SDX_Display display = (SDX_Display)Display.Impl; Modified: trunk/Drivers/AgateSDX/SDX_VertexBuffer.cs =================================================================== --- trunk/Drivers/AgateSDX/SDX_VertexBuffer.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Drivers/AgateSDX/SDX_VertexBuffer.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -217,7 +217,7 @@ SetTextures(); mDisplay.D3D_Device.AlphaArgument1 = Direct3D.TextureArgument.Texture; - + mDisplay.D3D_Device.Device.VertexDeclaration = mDeclaration; mDisplay.D3D_Device.Device.Indices = indexbuffer.DeviceIndexBuffer; mDisplay.D3D_Device.Device.SetStreamSource(0, mBuffer, 0, mLayout.VertexSize); Modified: trunk/Drivers/AgateSDX/Shaders/FixedFunction/SDX_FF_Lighting2D.cs =================================================================== --- trunk/Drivers/AgateSDX/Shaders/FixedFunction/SDX_FF_Lighting2D.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Drivers/AgateSDX/Shaders/FixedFunction/SDX_FF_Lighting2D.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -94,52 +94,61 @@ Set2DDrawState(); - //if (EnableLighting == false) - //{ - // mDisplay.D3D_Device.Device.SetRenderState(RenderState.Lighting, false); - // return; - //} + mDisplay.D3D_Device.Device.SetRenderState(RenderState.Lighting, true); + mDisplay.D3D_Device.Device.SetRenderState(RenderState.Ambient, AmbientLight.ToArgb()); + mDisplay.D3D_Device.Device.SetRenderState(RenderState.ColorVertex, true); - //mDisplay.D3D_Device.Device.SetRenderState(RenderState.Lighting, true); - //mDisplay.D3D_Device.Device.SetRenderState(RenderState.Ambient, AmbientLight.ToArgb()); + TextureArgument arg0 = (TextureArgument)mDisplay.D3D_Device.Device.GetTextureStageState(0, TextureStage.ColorArg0); + TextureArgument arg1 = (TextureArgument)mDisplay.D3D_Device.Device.GetTextureStageState(0, TextureStage.ColorArg1); + TextureArgument arg2 = (TextureArgument)mDisplay.D3D_Device.Device.GetTextureStageState(0, TextureStage.ColorArg2); + TextureOperation op = (TextureOperation)mDisplay.D3D_Device.Device.GetTextureStageState(0, TextureStage.ColorOperation); - //Material material = new Material(); - //material.Diffuse = new SlimDX.Color4(Color.White.ToArgb()); - //material.Ambient = new SlimDX.Color4(Color.White.ToArgb()); + mDisplay.D3D_Device.Device.SetTextureStageState(0, TextureStage.ColorArg0, TextureArgument.Current); + mDisplay.D3D_Device.Device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.Texture); + mDisplay.D3D_Device.Device.SetTextureStageState(0, TextureStage.ColorArg2, TextureArgument.Current); + mDisplay.D3D_Device.Device.SetTextureStageState(0, TextureStage.ColorOperation, TextureOperation.Modulate); + mDisplay.D3D_Device.Device.SetRenderState(RenderState.DiffuseMaterialSource, ColorSource.Color1); + mDisplay.D3D_Device.Device.SetRenderState(RenderState.AmbientMaterialSource, ColorSource.Color1); + + Material material = new Material(); + material.Diffuse = new SlimDX.Color4(Color.White.ToArgb()); + material.Ambient = new SlimDX.Color4(Color.White.ToArgb()); + + + mDisplay.D3D_Device.Device.Material = material; - //mDisplay.D3D_Device.Device.Material = material; + int index = 0; - //int index = 0; + for (int i = 0; i < Lights.Count; i++) + { + var agateLight = Lights[i]; - //for (int i = 0; i < Lights.Count; i++) - //{ - // var agateLight = Lights[i]; + if (agateLight == null) + continue; + if (agateLight.Enabled == false) + continue; - // if (agateLight == null) - // continue; - // if (agateLight.Enabled == false) - // continue; + SlimDX.Direct3D9.Light l = new SlimDX.Direct3D9.Light(); - // SlimDX.Direct3D9.Light l = new SlimDX.Direct3D9.Light(); + l.Ambient = new SlimDX.Color4(agateLight.AmbientColor.ToArgb()); + l.Attenuation0 = agateLight.AttenuationConstant; + l.Attenuation1 = agateLight.AttenuationLinear; + l.Attenuation2 = agateLight.AttenuationQuadratic; + l.Diffuse = new SlimDX.Color4(agateLight.DiffuseColor.ToArgb()); + l.Type = LightType.Point; + l.Direction = new SlimDX.Vector3(0, 0, 1); + l.Range = 100; + - // l.Ambient = new SlimDX.Color4(agateLight.AmbientColor.ToArgb()); - // l.Attenuation0 = agateLight.AttenuationConstant; - // l.Attenuation1 = agateLight.AttenuationLinear; - // l.Attenuation2 = agateLight.AttenuationQuadratic; - // l.Diffuse = new SlimDX.Color4(agateLight.DiffuseColor.ToArgb()); - // l.Type = LightType.Point; - // l.Direction = new SlimDX.Vector3(0, 0, 1); - // l.Range = 100; + Vector3 pos = agateLight.Position; - // Vector3 pos = agateLight.Position; + l.Position = new SlimDX.Vector3(pos.X, pos.Y, pos.Z); - // l.Position = new SlimDX.Vector3(pos.X, pos.Y, pos.Z); + mDisplay.D3D_Device.Device.SetLight(index, l); + mDisplay.D3D_Device.Device.EnableLight(index, true); - // mDisplay.D3D_Device.Device.SetLight(index, l); - // mDisplay.D3D_Device.Device.EnableLight(index, true); - - // index++; - //} + index++; + } } public override void BeginPass(int passIndex) Modified: trunk/Tests/DisplayTests/FullScreen.cs =================================================================== --- trunk/Tests/DisplayTests/FullScreen.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Tests/DisplayTests/FullScreen.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -35,6 +35,8 @@ Keyboard.KeyDown += new InputEventHandler(Keyboard_KeyDown); FontSurface font = FontSurface.AgateSans14; + int frames = 1; + // Run the program while the window is open. while (Display.CurrentWindow.IsClosed == false && Keyboard.Keys[KeyCode.Escape] == false && @@ -44,10 +46,14 @@ Display.Clear(Color.DarkGreen); font.DrawText(text); + + font.DrawText(0, 480 - font.FontHeight, "Frames: {0}", frames); + mySurface.Draw(Mouse.X, Mouse.Y); Display.EndFrame(); Core.KeepAlive(); + frames++; } } } Modified: trunk/Tests/Shaders/LightingTest/LightingTest.cs =================================================================== --- trunk/Tests/Shaders/LightingTest/LightingTest.cs 2014-06-24 05:35:05 UTC (rev 1393) +++ trunk/Tests/Shaders/LightingTest/LightingTest.cs 2014-06-24 05:38:38 UTC (rev 1394) @@ -70,7 +70,7 @@ lt2.Position = new Vector3(e.MousePosition.X, e.MousePosition.Y, -1); }; - while (true)//(frm.Visible == true) + while (wnd.IsClosed == false) { //if (frm.chkMoveLight.Checked) time += Display.DeltaTime / 1000.0; @@ -86,9 +86,8 @@ Display.BeginFrame(); Display.Clear(Color.DarkRed); - //lights.Activate(); - - //lights.Enabled = frm.enableLightingCheck.Checked; + lights.Activate(); + //lights.DoLighting(); //fx.SetVariable("worldViewProj", wnd.OrthoProjection); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |