Example #1
0
		public override void LoadContent()
		{
			
			var mesh = ContentManager.Load<Mesh>("audi.ASE");
			//mesh.Position.X = -30;
			mesh.World = Matrix.CreateScale(new Vector(10f, 10f, 10f));
			Scene.AddNode(mesh);

			_lightSprite = ContentManager.Load<Sprite>("sun.png");
			Scene.AddNode(_lightSprite);


			var sprite = ContentManager.Load<Sprite>("recycle.png");
			sprite.Position = new Vector(-10,0,0);
			//Scene.AddNode(sprite);

			Display.BackgroundColor = Color.FromArgb(0xff, 0, 0, 0);

			var cylinder = ContentManager.CreateCylinder(10f, 20f, 8, 1);

			light = new OmniLight();
            light.Range = 3.0f;
			light.Position.X = 0;
			light.Position.Y = 0;
			light.Position.Z = -30;
            light.ColorDiffuse = Color.FromArgb(0xff, 0x1f, 0x1f, 0x6f);
            light.ColorSpecular = Color.FromArgb(0xff, 0xff, 0xff, 0xff);
            light.ColorAmbient = Color.FromArgb(0xff, 0, 0x5f, 0);
			Scene.AddNode(light);
		}
		public void Render(IViewport viewport, Sprite sprite, Matrix view, Matrix projection, Matrix world, float xScale, float yScale, float rotation)
		{
			var buffer = BufferManager.Instance.Current;

			var image = sprite.CurrentFrame;

			
			var position = new Vector(0, 0, 0);
			var transformedPosition = Vector.Transform(position, world, view);
			var translatedPosition = Vector.Translate(transformedPosition, projection, viewport.Width, viewport.Height);
			var depthBufferAdjustedZ = -transformedPosition.Z / viewport.Camera.DepthDivisor;
			var positionOffset = (((int)translatedPosition.X)) + (((int)translatedPosition.Y) * buffer.FrameBuffer.Stride);

			var bufferSize = buffer.FrameBuffer.Stride*buffer.Height;
			var bufferZ = (UInt32)(depthBufferAdjustedZ * (float)UInt32.MaxValue);
			if( depthBufferAdjustedZ < 0f || depthBufferAdjustedZ >= 1f)
			{
				return;
			}
			
			if( xScale != 1f || yScale != 1f )
			{
				RenderScaled(buffer, positionOffset, sprite.CurrentFrame, translatedPosition, bufferSize, bufferZ, xScale, yScale);
				
			} else
			{
				RenderUnscaled(buffer,positionOffset,sprite.CurrentFrame,translatedPosition,bufferSize,bufferZ);
			}
		}
		public void Render(IViewport viewport, Sprite sprite, Matrix view, Matrix projection, Matrix world, float xScale, float yScale, float rotation)
		{
			
		}