lunedì 16 gennaio 2012

How To:Direct X

Ecco il primo giro di prova su Direct X !

Giusto per comprendere come funziona questo "chiodo" e dopo svariati tentativi http://www.blogger.com/img/blank.gifsu XNA, mi sono deciso nel voler fare delle prove direttamente da visual studio 2010.

Per poter fare questa prova vi serve sicuramente "DirectX for Managed Code" che tuttavia non appartiene al Framework 4.0 ma al 1.1.4322 il che vi porta al post:
Solved:Mixed mode assembly nel caso stiate usando un framework differente dal 4.0.

Ciò detto:
Create una Window Application,
Aggiungete le reference del framework (Direct X),
E procediamo così per gradi:

Il form:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace TestDX
{
public partial class frmTestDX : Form
{
public Device dx = null;

public frmTestDX()
{
InitializeComponent();
}


public void InitGraphics()
{
PresentParameters ps = new PresentParameters();
ps.Windowed = true;
ps.SwapEffect = SwapEffect.Discard;

dx = new Device(0, DeviceType.Hardware,
this,
CreateFlags.SoftwareVertexProcessing,
ps);
}


protected override void OnPaint(PaintEventArgs e)
{
dx.Clear(ClearFlags.Target,
System.Drawing.Color.DimGray,
1.0F,
0);
dx.Present();
}
}
}


Tutto il codice scritto serve esclusivamente a inizializzare la struttura Device,
che di contro è il nostro piano di riferimento.
L'entry point di un applicazione XNA.

E questo è il Main :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace TestDX
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
frmTestDX fx = new frmTestDX();
Application.EnableVisualStyles();
fx.InitGraphics();
Application.Run(fx);
}
}
}


Come noterete c'e' qualche differenza rispetto al solito:
"Application.SetCompatibleTextRenderingDefault(false);"
Questa è stata completamente rimossa, perchè tecnicamente non serve.

Bene che cosa ci serve ( se non siamo incappati nel problema Solved:Mixed mode assembly ) ci basta solo premere l'avvio.

Di contro è il primo esempio e otteremo uno sfondo grigio!

Nessun commento: