using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Samples.DirectX.UtilityToolkit;
namespace BattleFighters2006
{
public partial class GameEngine : Form
{
protected override void OnPaint(PaintEventArgs e)
{
deltaTime = FrameworkTimer.GetElapsedTime();
this.Invalidate();
FrameworkTimer.Start();
}
public GameEngine()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint |
ControlStyles.Opaque, true);
// Get the ordinal for the default adapter
int adapterOrdinal = Manager.Adapters.Default.Adapter;
// Get our device capabilities so we can check them to set up the
// CreateFlags
Caps caps = Manager.GetDeviceCaps(adapterOrdinal, DeviceType.Hardware);
CreateFlags createFlags;
// Check the capabilities of the graphcis card is capable of
// performing the vertex-processing operations
// The HardwareVertexProcessing choice is the best
if (caps.DeviceCaps.SupportsHardwareTransformAndLight)
{
createFlags = CreateFlags.HardwareVertexProcessing;
}
else
{
createFlags = CreateFlags.SoftwareVertexProcessing;
}
// If the graphics card supports vertex processing check if the device
// can do rasterization, matrix transformations, and lighting and
//shading operations
// This combination provides the fastest game experience
if (caps.DeviceCaps.SupportsPureDevice && createFlags ==
CreateFlags.HardwareVertexProcessing)
{
createFlags |= CreateFlags.PureDevice;
}
// Set up the PresentParameters which determine how the device behaves
PresentParameters presentParams = new PresentParameters();
presentParams.SwapEffect = SwapEffect.Discard;
// Make sure we are in windowed mode when we are debugging
#if DEBUG
presentParams.Windowed = true;
#endif
// Now create the device
device = new Device(adapterOrdinal, DeviceType.Hardware, this,
createFlags, presentParams);
}
private double deltaTime;
}
}
Stupiti? Allibiti? Incuranti?
Già, anche io mi troverei leggermente a disagio davanti ad un testo in Sanscrito, ma questo in realtà è un semplice codice in C# [correzione bye Paolo, NdZ3RØ], un linguaggio di programmazione piuttosto noto, che ho deciso di rispolverare e di riutilizzare per un fine altamente personale : programmare un motore grafico funzionante per un FPS, ovvero un First Person Shooter (ok, Sparatutto in Prima Persona, tipo DooM ^^)
Il progetto non sarà assolutamente in cima alla mia lista, ma lo coltiverò assiduamente spendendoci il tempo che potrò, e chi lo sa, magari fra un annetto avrò qualcosa di pronto da far provare a tutti voi.
Ok, aggiornamento serale effettuato.
4 commenti
Comments feed for this article
23 novembre 2006 a 2:42 pm
advapi
bravo al codice originale hai aggiunto una text….. e poi non si chiama visual c# ma solo c#….
23 novembre 2006 a 3:47 pm
Z3RØ
già, e tra l’altro quello è pure sbagliato perchè è la dichiarazione della Class GameEngine, e non la struttura principale a dirla tutta. Difatti il Method OnPaint li non centra niente, ho fatto un casino col copiaincolla 😀
Quando torno a casa lo aggiorno.
27 novembre 2006 a 8:27 pm
Juspolo
ma hai classi 3d?
o ti fai tutto te? 😉
28 novembre 2006 a 10:05 am
Z3RØ
Per ora sto seguendo un tutorial che fornisce le linee di codice con i commenti e ti fa aggiungere il codice manualmente. Ovviamente fornisce anche il codice già scritto, ma è controproducente fare “copia incolla, copia incolla, copia incolla”.
Il programma che uso è il Visual Studio C# Express, con librerie XNA e DirectX 9.0 SDK. In aggiunta, per i mesh, uso Zbrush e come supporto di Texturing ho scaricato il freeware Paint.NET 😉