using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using D3D = Microsoft.DirectX.Direct3D; using DX = Microsoft.DirectX; namespace Nuclex.Opal.SimpleExample { public partial class RenderWindow : Direct3DForm { public RenderWindow() { InitializeComponent(); m_attachedEntities = new List(); } private void SetupCamera() { d3dDevice.Transform.View = DX.Matrix.LookAtLeftHanded( new DX.Vector3(0, 10, -50), new DX.Vector3(), new DX.Vector3(0, 50, 10) ); d3dDevice.Transform.Projection = DX.Matrix.PerspectiveFieldOfViewLeftHanded( (float)System.Math.PI / 4, (float)this.ClientSize.Width / this.ClientSize.Height, 1.0f, 100.0f ); } protected override void OnRender(EventArgs e) { Render(); } private void SetupLights() { d3dDevice.Lights[0].LightType = D3D.LightType.Directional; d3dDevice.Lights[0].Direction = new DX.Vector3(0, -3, 5); d3dDevice.Lights[0].Diffuse = Color.White; d3dDevice.Lights[0].Enabled = true; } public void Render() { SetupLights(); SetupCamera(); /* d3dDevice.Clear( D3D.ClearFlags.Target | D3D.ClearFlags.ZBuffer, Color.BlueViolet, 1, 0 ); d3dDevice.BeginScene(); */ SetupLights(); d3dDevice.Lights[0].Update(); foreach(Entity entity in m_attachedEntities) entity.Render(); /* d3dDevice.EndScene(); d3dDevice.Present(); */ } private void keyPressed(object sender, KeyPressEventArgs e) { if(e.KeyChar == ' ') m_spacePressed = true; } public bool WasSpacePressed() { if(m_spacePressed) { m_spacePressed = false; return true; } return false; } public void AddEntity(Solid solid) { m_attachedEntities.Add(new Entity(d3dDevice, solid)); } private bool m_spacePressed; private List m_attachedEntities; private void resized(object sender, EventArgs e) { /* presentParams.BackBufferWidth = ClientSize.Width; presentParams.BackBufferWidth = ClientSize.Height; D3D.DisplayMode displayMode = m_D3DDevice.DisplayMode; displayMode.Width = ClientSize.Width; displayMode.Height = ClientSize.Height; //m_D3DDevice.DisplayMode = displayMode; D3D.Viewport viewPort = m_D3DDevice.Viewport; viewPort.Width = ClientSize.Width; viewPort.Height = ClientSize.Height; m_D3DDevice.Viewport = viewPort; m_D3DDevice.Reset(presentParams); */ } } } // Nuclex.Opal.SimpleExample