PDA

View Full Version : نورپردازی به وسیله گرافیک



sajjad1365
پنج شنبه 10 دی 1388, 19:31 عصر
سلام .من این کدها رو برا یه خونه دارم. و میخوام که نور پردازی کنم ولی خیلی از نور پردازی چیزی نمیدونم . میشه کمک کنین؟

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

namespace AP_2
{
public partial class Form1 : Form
{

PresentParameters pp;
Device device3d;
short[] index;
public static int n = 64;
public static CustomVertex.PositionColored[] vertics;
CustomVertex.PositionTextured[] vertics_kaf,vertics_kaf2 ,vertics_kaf3, vertics_sagf,vertics_wall1,vertics_wall2;
CustomVertex.PositionTextured[] vertics_wall3,vertics_wall4,vertics_farsh,vertics_ dar ,vertics_darh ;
CustomVertex.PositionTextured[] vertics_win,vertics_wallch,vertics_wallr,vertics_w allh;
CustomVertex.PositionTextured[] vertics_hoz, vertics_pele, vertics_sagf2, vertics_wallo , vertics_wallo2;
CustomVertex.PositionTextured[] vertics_t, vertics_ash , vertics_ash2, vertics_room ;
CustomVertex.PositionTextured[] vertics_win2, vertics_ash3 , vertics_ash4;
CustomVertex.PositionTextured[] vertics_win3;
Texture tx_kaf,tx_kaf2 ,tx_kaf3,tx_sagf,tx_wall1,tx_wall2,tx_wall3,tx_wal l4,tx_farsh,tx_dar ,tx_darh;
Texture tx_win, tx_pele, tx_sagf2, tx_wallo , tx_wallo2;
Texture tx_wallch,tx_ash ,tx_ash2,tx_room ,tx_ash3 ,tx_ash4;
Texture tx_wallr;
Texture tx_wallh;
Texture tx_hoz;
Texture tx_t;
Texture tx_win2;
Texture tx_win3;
GraphicInput gi;
public static Wallset wset;
Mesh zamin;
public static Vector3 CameraPos, CameraTary,CameraTarg, VpVector;
public Form1()
{
wset = new Wallset(10);


////////////////////////////////////////////////////////////////////////////
InitializeComponent();
SetStyle(ControlStyles.Opaque | ControlStyles.AllPaintingInWmPaint, true);
pp = new PresentParameters();
pp.Windowed = true;
pp.AutoDepthStencilFormat = DepthFormat.D16;
pp.EnableAutoDepthStencil = true;
pp.SwapEffect = SwapEffect.Discard;
device3d = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, pp);
prepareDevice();
///////////////////////////////////////////////////////////////////////////////

vertics_kaf = new CustomVertex.PositionTextured[4];
vertics_kaf[0] = new CustomVertex.PositionTextured(0, 0, 0,5,5);
vertics_kaf[1] = new CustomVertex.PositionTextured(200,0,0,0,5);
vertics_kaf[2] = new CustomVertex.PositionTextured(0,200,0,5,0);
vertics_kaf[3] = new CustomVertex.PositionTextured(200,200, 0, 0, 0);
tx_kaf = TextureLoader.FromFile(device3d, "Wood.jpg");

vertics_kaf2 = new CustomVertex.PositionTextured[4];
vertics_kaf2[0] = new CustomVertex.PositionTextured(0, 200, 0,0,0);
vertics_kaf2[1] = new CustomVertex.PositionTextured(200,200,0,7,0);
vertics_kaf2[2] = new CustomVertex.PositionTextured(0,350,0,0,7);
vertics_kaf2[3] = new CustomVertex.PositionTextured(200, 350, 0, 7, 7);
tx_kaf2 = TextureLoader.FromFile(device3d, "kaf3.jpg");
vertics_ash3 = new CustomVertex.PositionTextured[6];
vertics_ash3[0] = new CustomVertex.PositionTextured(0, 0, 180, 0, 0);
vertics_ash3[1] = new CustomVertex.PositionTextured(110, 0, 180, 5, 0);
vertics_ash3[2] = new CustomVertex.PositionTextured(0, 0, 90, 0, 5);
vertics_ash3[3] = new CustomVertex.PositionTextured(110, 0, 90, 5, 5);
tx_ash3 = TextureLoader.FromFile(device3d, "hayat.bmp");
vertics_ash4 = new CustomVertex.PositionTextured[6];
vertics_ash4[0] = new CustomVertex.PositionTextured(0, 60, 180, 0, 0);
vertics_ash4[1] = new CustomVertex.PositionTextured(0, 0, 180, 5, 0);
vertics_ash4[2] = new CustomVertex.PositionTextured(0, 60, 90, 0, 5);
vertics_ash4[3] = new CustomVertex.PositionTextured(0, 0, 90, 5, 5);
tx_ash4 = TextureLoader.FromFile(device3d, "hayat.bmp");

index = new short[6];
index[0] = 0;
index[1] = 1;
index[2] = 2;
index[3] = 1;
index[4] = 3;
index[5] = 2;
vertics_sagf = new CustomVertex.PositionTextured[6];
vertics_sagf[0] = new CustomVertex.PositionTextured(0, 0, 90, 0, 5);
vertics_sagf[1] = new CustomVertex.PositionTextured(200, 200, 90, 0, 0);
vertics_sagf[2] = new CustomVertex.PositionTextured(0, 200, 90, 5, 5);
vertics_sagf[3] = new CustomVertex.PositionTextured(0, 0, 90, 5, 5);
vertics_sagf[4] = new CustomVertex.PositionTextured(200, 0, 90, 0,0);
vertics_sagf[5] = new CustomVertex.PositionTextured(200, 200, 90, 5, 0);
tx_sagf = TextureLoader.FromFile(device3d, "sagf2.jpg");
vertics_kaf3 = new CustomVertex.PositionTextured[6];
vertics_kaf3[0] = new CustomVertex.PositionTextured(0, 60, 90, 0, 3);
vertics_kaf3[1] = new CustomVertex.PositionTextured(0, 0, 90, 0, 0);
vertics_kaf3[2] = new CustomVertex.PositionTextured(110, 60, 90, 3, 3);
vertics_kaf3[3] = new CustomVertex.PositionTextured(110, 60, 90, 0, 0);
vertics_kaf3[4] = new CustomVertex.PositionTextured(0, 0, 90, 0, 3);
vertics_kaf3[5] = new CustomVertex.PositionTextured(110, 0, 90, 3, 3);
tx_kaf3 = TextureLoader.FromFile(device3d, "blu.bmp");

vertics_sagf2 = new CustomVertex.PositionTextured[6];
vertics_sagf2[0] = new CustomVertex.PositionTextured(0, 0, 180, 0, 0);
vertics_sagf2[1] = new CustomVertex.PositionTextured(200, 200, 180, 5, 0);
vertics_sagf2[2] = new CustomVertex.PositionTextured(0, 200, 180, 0, 5);
vertics_sagf2[3] = new CustomVertex.PositionTextured(0, 0, 180, 5, 0);
vertics_sagf2[4] = new CustomVertex.PositionTextured(200, 0, 180, 5,5);
vertics_sagf2[5] = new CustomVertex.PositionTextured(200, 200, 180, 0, 5);
tx_sagf2 = TextureLoader.FromFile(device3d, "s.jpg");

vertics_pele = new CustomVertex.PositionTextured[6];
vertics_pele[0] = new CustomVertex.PositionTextured(170, 100, 0, 0, 5);
vertics_pele[1] = new CustomVertex.PositionTextured(170, 20, 90, 0, 0);
vertics_pele[2] = new CustomVertex.PositionTextured(200, 100, 0, 1, 5);
vertics_pele[3] = new CustomVertex.PositionTextured(200, 100, 0, 1, 5);
vertics_pele[4] = new CustomVertex.PositionTextured(170, 20, 90, 0, 0);
vertics_pele[5] = new CustomVertex.PositionTextured(200, 20, 90, 1, 0);
tx_pele = TextureLoader.FromFile(device3d, "pele.jpg");
vertics_ash = new CustomVertex.PositionTextured[6];
vertics_ash[0] = new CustomVertex.PositionTextured(0, 60, 90, 0, 5);
vertics_ash[1] = new CustomVertex.PositionTextured(0, 60, 130, 0, 0);
vertics_ash[2] = new CustomVertex.PositionTextured(80, 60, 90, 5, 5);
vertics_ash[3] = new CustomVertex.PositionTextured(80, 60, 90, 5, 5);
vertics_ash[4] = new CustomVertex.PositionTextured(0, 60, 130, 0, 0);
vertics_ash[5] = new CustomVertex.PositionTextured(80, 60, 130, 5, 0);
tx_ash = TextureLoader.FromFile(device3d, "kk.bmp");
vertics_ash2 = new CustomVertex.PositionTextured[6];
vertics_ash2[0] = new CustomVertex.PositionTextured(110, 0, 90, 5, 0);
vertics_ash2[1] = new CustomVertex.PositionTextured(110, 0, 180, 5, 5);
vertics_ash2[2] = new CustomVertex.PositionTextured(110, 60, 90, 0, 0);
vertics_ash2[3] = new CustomVertex.PositionTextured(110, 60, 90, 0, 0);
vertics_ash2[4] = new CustomVertex.PositionTextured(110, 0, 180, 5, 5);
vertics_ash2[5] = new CustomVertex.PositionTextured(110, 60, 180, 0, 5);
tx_ash2 = TextureLoader.FromFile(device3d, "hayat.bmp");
vertics_room = new CustomVertex.PositionTextured[6];
vertics_room[0] = new CustomVertex.PositionTextured(140, 60, 90, 0, 4);
vertics_room[1] = new CustomVertex.PositionTextured(140, 60, 180, 0, 0);
vertics_room[2] = new CustomVertex.PositionTextured(200, 60, 90, 4, 4);
vertics_room[3] = new CustomVertex.PositionTextured(200, 60, 90, 4, 4);
vertics_room[4] = new CustomVertex.PositionTextured(140, 60, 180, 0, 0);
vertics_room[5] = new CustomVertex.PositionTextured(200, 60, 180, 4, 0);
tx_room = TextureLoader.FromFile(device3d, "1.bmp");

vertics_wallch = new CustomVertex.PositionTextured[6];
vertics_wallch[0] = new CustomVertex.PositionTextured(0, 350, 0, 0, 2);
vertics_wallch[1] = new CustomVertex.PositionTextured(0, 350, 90, 0, 0);
vertics_wallch[2] = new CustomVertex.PositionTextured(0, 200, 0, 2, 2);
vertics_wallch[3] = new CustomVertex.PositionTextured(0, 200, 0, 2, 2);
vertics_wallch[4] = new CustomVertex.PositionTextured(0, 350, 90, 0, 0);
vertics_wallch[5] = new CustomVertex.PositionTextured(0, 200, 90, 2, 0);
tx_wallch = TextureLoader.FromFile(device3d, "sagf.jpg");
vertics_wallr = new CustomVertex.PositionTextured[6];
vertics_wallr[0] = new CustomVertex.PositionTextured(200, 200, 0, 2, 0);
vertics_wallr[1] = new CustomVertex.PositionTextured(200, 200, 90, 2, 2);
vertics_wallr[2] = new CustomVertex.PositionTextured(200, 350,0, 0, 0);
vertics_wallr[3] = new CustomVertex.PositionTextured(200, 350, 0, 0, 0);
vertics_wallr[4] = new CustomVertex.PositionTextured(200, 200, 90, 2, 2);
vertics_wallr[5] = new CustomVertex.PositionTextured(200, 350, 90, 0, 2);
tx_wallr = TextureLoader.FromFile(device3d, "sagf.jpg");
wset.add(new wall(198, 202, 0, 350, 0, 180));
vertics_wall1 = new CustomVertex.PositionTextured[6];
vertics_wall1[0] = new CustomVertex.PositionTextured(200, 0, 0, 5, 0);
vertics_wall1[1] = new CustomVertex.PositionTextured(200, 0, 180, 5, 5);
vertics_wall1[2] = new CustomVertex.PositionTextured(200, 200, 0, 0, 0);
vertics_wall1[3] = new CustomVertex.PositionTextured(200, 200, 0, 0, 0);
vertics_wall1[4] = new CustomVertex.PositionTextured(200, 0, 180, 5, 5);
vertics_wall1[5] = new CustomVertex.PositionTextured(200, 200, 180, 0, 5);
tx_wall1 = TextureLoader.FromFile(device3d, "1.bmp");
wset.add(new wall(0, 200, -2, 2, 0, 180));
vertics_win = new CustomVertex.PositionTextured[6];
vertics_win[0] = new CustomVertex.PositionTextured(1, 110,5, 0, 1);
vertics_win[1] = new CustomVertex.PositionTextured(1, 110, 65, 0, 0);
vertics_win[2] = new CustomVertex.PositionTextured(1, 50, 5, 1, 1);
vertics_win[3] = new CustomVertex.PositionTextured(1, 50, 5, 1, 1);
vertics_win[4] = new CustomVertex.PositionTextured(1, 110, 65, 0, 0);
vertics_win[5] = new CustomVertex.PositionTextured(1, 50, 65, 1, 0);
tx_win = TextureLoader.FromFile(device3d, "w6.jpg");
vertics_wall2 = new CustomVertex.PositionTextured[6];
vertics_wall2[0] = new CustomVertex.PositionTextured(0, 200, 0, 0, 5);
vertics_wall2[1] = new CustomVertex.PositionTextured(0, 200, 180, 0, 0);
vertics_wall2[2] = new CustomVertex.PositionTextured(0, 0, 0, 5, 5);
vertics_wall2[3] = new CustomVertex.PositionTextured(0, 200, 180, 5, 5);
vertics_wall2[4] = new CustomVertex.PositionTextured(0, 0, 180, 0, 0);
vertics_wall2[5] = new CustomVertex.PositionTextured(0, 0, 0, 5, 0);
tx_wall2 = TextureLoader.FromFile(device3d, "1.bmp");
wset.add(new wall(198, 202, 0, 200, 0, 180));

vertics_wall3 = new CustomVertex.PositionTextured[6];
vertics_wall3[0] = new CustomVertex.PositionTextured(0, 0, 0, 0, 5);
vertics_wall3[1] = new CustomVertex.PositionTextured(0, 0, 180, 0, 0);
vertics_wall3[2] = new CustomVertex.PositionTextured(200, 0, 0, 5, 5);
vertics_wall3[3] = new CustomVertex.PositionTextured(0, 0, 180, 5,5);
vertics_wall3[4] = new CustomVertex.PositionTextured(200, 0, 180, 0, 0);
vertics_wall3[5] = new CustomVertex.PositionTextured(200, 0, 0, 5, 0);
tx_wall3 = TextureLoader.FromFile(device3d, "1.bmp");
wset.add(new wall(-1, 1, 0, 200, 0, 180));

vertics_wallh = new CustomVertex.PositionTextured[6];
vertics_wallh[0] = new CustomVertex.PositionTextured(0, 350, 0, 1, 5);
vertics_wallh[1] = new CustomVertex.PositionTextured(0, 350, 90, 1, 1);
vertics_wallh[2] = new CustomVertex.PositionTextured(200, 350, 0, 5, 5);
vertics_wallh[3] = new CustomVertex.PositionTextured(200, 350, 0, 5, 5);
vertics_wallh[4] = new CustomVertex.PositionTextured(0, 350, 90, 1, 1);
vertics_wallh[5] = new CustomVertex.PositionTextured(200, 350, 90, 5, 1);
tx_wallh = TextureLoader.FromFile(device3d, "sagf.jpg");

vertics_wall4 = new CustomVertex.PositionTextured[6];
vertics_wall4[0] = new CustomVertex.PositionTextured(0, 200, 0, 0, 7);
vertics_wall4[1] = new CustomVertex.PositionTextured(0, 200, 180, 0, 0);
vertics_wall4[2] = new CustomVertex.PositionTextured(200, 200, 0, 8, 7);
vertics_wall4[3] = new CustomVertex.PositionTextured(200, 200, 0, 8, 7);
vertics_wall4[4] = new CustomVertex.PositionTextured(0, 200, 180, 0, 0);
vertics_wall4[5] = new CustomVertex.PositionTextured(200, 200, 180, 8, 0);
tx_wall4 = TextureLoader.FromFile(device3d, "1.jpg");
wset.add(new wall(0, 150, 198, 202, 0, 180));
wset.add(new wall(190, 200, 198, 202, 0, 180));
wset.add(new wall(150, 190, 198, 202, 90, 180));
vertics_wallo = new CustomVertex.PositionTextured[6];
vertics_wallo[0] = new CustomVertex.PositionTextured(0, 200, 0, 0, 5);
vertics_wallo[1] = new CustomVertex.PositionTextured(0, 200, 90, 0, 0);
vertics_wallo[2] = new CustomVertex.PositionTextured(200, 200, 0, 5, 5);
vertics_wallo[3] = new CustomVertex.PositionTextured(200, 200, 0, 5, 5);
vertics_wallo[4] = new CustomVertex.PositionTextured(0, 200, 90, 0, 0);
vertics_wallo[5] = new CustomVertex.PositionTextured(200, 200, 90, 5, 0);
tx_wallo = TextureLoader.FromFile(device3d, "1.bmp");
vertics_wallo2 = new CustomVertex.PositionTextured[6];
vertics_wallo2[0] = new CustomVertex.PositionTextured(0, 200, 90, 0, 5);
vertics_wallo2[1] = new CustomVertex.PositionTextured(0, 200, 180, 0, 0);
vertics_wallo2[2] = new CustomVertex.PositionTextured(200, 200, 90, 5, 5);
vertics_wallo2[3] = new CustomVertex.PositionTextured(200, 200, 90, 5, 5);
vertics_wallo2[4] = new CustomVertex.PositionTextured(0, 200, 180, 0, 0);
vertics_wallo2[5] = new CustomVertex.PositionTextured(200, 200, 180, 5, 0);
tx_wallo2 = TextureLoader.FromFile(device3d, "1.bmp");

vertics_win2 = new CustomVertex.PositionTextured[6];
vertics_win2[0] = new CustomVertex.PositionTextured(25, 200, 110, 0, 1);
vertics_win2[1] = new CustomVertex.PositionTextured(25, 200, 150, 0, 0);
vertics_win2[2] = new CustomVertex.PositionTextured(70, 200, 110, 1, 1);
vertics_win2[3] = new CustomVertex.PositionTextured(70, 200, 110, 1, 1);
vertics_win2[4] = new CustomVertex.PositionTextured(25, 200, 150, 0, 0);
vertics_win2[5] = new CustomVertex.PositionTextured(70, 200, 150, 1, 0);
tx_win2 = TextureLoader.FromFile(device3d, "w2.jpg");
vertics_win3 = new CustomVertex.PositionTextured[6];
vertics_win3[0] = new CustomVertex.PositionTextured(100, 200, 110, 0, 1);
vertics_win3[1] = new CustomVertex.PositionTextured(100, 200, 150, 0, 0);
vertics_win3[2] = new CustomVertex.PositionTextured(150, 200, 110, 1, 1);
vertics_win3[3] = new CustomVertex.PositionTextured(150, 200, 110, 1, 1);
vertics_win3[4] = new CustomVertex.PositionTextured(100, 200, 150, 0, 0);
vertics_win3[5] = new CustomVertex.PositionTextured(150, 200, 150, 1, 0);
tx_win3 = TextureLoader.FromFile(device3d, "w2.jpg");
vertics_farsh = new CustomVertex.PositionTextured[6];
vertics_farsh[0] = new CustomVertex.PositionTextured(50, 50, 1, 0, 0);
vertics_farsh[1] = new CustomVertex.PositionTextured(150, 50, 1, 1, 0);
vertics_farsh[2] = new CustomVertex.PositionTextured(150, 150, 1, 1, 1);
vertics_farsh[3] = new CustomVertex.PositionTextured(50, 50, 1, 0, 0);
vertics_farsh[4] = new CustomVertex.PositionTextured(150, 150, 1, 1, 1);
vertics_farsh[5] = new CustomVertex.PositionTextured(50, 150, 1, 0, 1);
tx_farsh = TextureLoader.FromFile(device3d, "farsh5.jpg");
vertics_hoz = new CustomVertex.PositionTextured[6];
vertics_hoz[0] = new CustomVertex.PositionTextured(50, 260, 1, 0, 1);
vertics_hoz[1] = new CustomVertex.PositionTextured(50, 220, 1, 0, 0);
vertics_hoz[2] = new CustomVertex.PositionTextured(120, 260, 1, 1, 1);
vertics_hoz[3] = new CustomVertex.PositionTextured(120, 260, 1, 1, 1);
vertics_hoz[4] = new CustomVertex.PositionTextured(50, 220, 1, 0, 0);
vertics_hoz[5] = new CustomVertex.PositionTextured(120, 220, 1, 1, 0);
tx_hoz = TextureLoader.FromFile(device3d, "hoz.jpg");

vertics_dar = new CustomVertex.PositionTextured[6];
vertics_dar[0] = new CustomVertex.PositionTextured(150, 201, 0, 0, 1);
vertics_dar[1] = new CustomVertex.PositionTextured(150, 201, 70, 0,0);
vertics_dar[2] = new CustomVertex.PositionTextured(190, 201, 0, 1, 1);
vertics_dar[3] = new CustomVertex.PositionTextured(150, 201, 70, 0, 0);
vertics_dar[4] = new CustomVertex.PositionTextured(190, 201, 70, 1, 0);
vertics_dar[5] = new CustomVertex.PositionTextured(190, 201, 0, 1, 1);
tx_dar = TextureLoader.FromFile(device3d, "dar1.jpg");
vertics_darh = new CustomVertex.PositionTextured[6];
vertics_darh[0] = new CustomVertex.PositionTextured(100, 351, 0, 0, 1);
vertics_darh[1] = new CustomVertex.PositionTextured(100, 351, 70, 0,0);
vertics_darh[2] = new CustomVertex.PositionTextured(190, 351, 0, 1, 1);
vertics_darh[3] = new CustomVertex.PositionTextured(100, 351, 70, 0, 0);
vertics_darh[4] = new CustomVertex.PositionTextured(190, 351, 70, 1, 0);
vertics_darh[5] = new CustomVertex.PositionTextured(190, 351, 0, 1, 1);
tx_darh = TextureLoader.FromFile(device3d, "darh.jpg");

vertics_t = new CustomVertex.PositionTextured[6];
vertics_t[0] = new CustomVertex.PositionTextured(199, 150, 40, 0, 1);
vertics_t[1] = new CustomVertex.PositionTextured(199, 150, 70, 0, 0);
vertics_t[2] = new CustomVertex.PositionTextured(199, 170, 40, 1, 1);
vertics_t[3] = new CustomVertex.PositionTextured(199, 170, 40, 1, 1);
vertics_t[4] = new CustomVertex.PositionTextured(199, 150, 70, 0, 0);
vertics_t[5] = new CustomVertex.PositionTextured(199, 170, 70, 1, 0);
tx_t = TextureLoader.FromFile(device3d, "o.jpg");



CameraPos = new Vector3(100, 440, 160);
CameraTarg = new Vector3(100, 0, 30);
// CameraPos = new Vector3(100,50,-100);
// CameraTary = new Vector3(100, 150, 150);
// CameraPos = new Vector3(100, 60,0);
//CameraTary = new Vector3(100, 100, 200);


VpVector = new Vector3(0, 0, 1);
// device3d.RenderState.Lighting = false;
gi = new GraphicInput();
}



}
protected override void OnPaint(PaintEventArgs e)
{

device3d.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1, 0);
// device3d.Clear(ClearFlags.Target, Color.LightBlue, 1, 0);
device3d.BeginScene();

device3d.VertexFormat = CustomVertex.PositionTextured.Format;
device3d.SetTexture(0, tx_kaf);
device3d.DrawIndexedUserPrimitives(PrimitiveType.T riangleList, 0,4,2,index ,true , vertics_kaf);



device3d.SetTexture(0, tx_farsh);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_farsh);


device3d.SetTexture(0, tx_wall2);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wall2);
device3d.SetTexture(0, tx_wall3);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wall3);

device3d.SetTexture(0, tx_win);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_win);

device3d.SetTexture(0, tx_wall1);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wall1);
device3d.SetTexture(0, tx_pele);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_pele);
device3d.SetTexture(0, tx_t);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_t);

device3d.SetTexture(0, tx_sagf2);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_sagf2);
device3d.SetTexture(0, tx_sagf);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_sagf);


device3d.SetTexture(0, tx_wall4);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wall4);

device3d.SetTexture(0, tx_win2);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_win2);
device3d.SetTexture(0, tx_win3);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_win3);
device3d.SetTexture(0, tx_wallch);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wallch);

device3d.SetTexture(0, tx_kaf2);
device3d.DrawIndexedUserPrimitives(PrimitiveType.T riangleList, 0,4,2,index,true , vertics_kaf2);
device3d.SetTexture(0, tx_wallr);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wallr);
device3d.SetTexture(0, tx_hoz);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_hoz);

device3d.SetTexture(0, tx_dar);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_dar);
device3d.SetTexture(0, tx_wallh);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_wallh);
device3d.SetTexture(0, tx_darh);
device3d.DrawUserPrimitives(PrimitiveType.Triangle List, 2, vertics_darh);



}
device3d.EndScene();
//device3d.RenderState.CullMode = Cull.None;
device3d.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 2, Width / Height, 1, 1000);
device3d.Transform.View = Matrix.LookAtLH(CameraPos,CameraTarg ,VpVector);
// CameraPos.Y-= 0.5f;
// CameraTary.Y -=0.5f;
zamin.DrawSubset(0);
Invalidate();
device3d.Present();
gi.checkInput();
}
private void Form1_Load(object sender, EventArgs e)
{
}

private void timer1_Tick(object sender, EventArgs e)
{

}



}

}

sajjad1365
جمعه 11 دی 1388, 10:02 صبح
سلام. کسی در این مورد اطلاعاتی نداره؟
اگه از دوستان چیزی میدونن دریغ نکنن.لطفا

مهدی رحیم زاده
جمعه 11 دی 1388, 12:48 عصر
سلام
در انتخاب عناوین دقت نمایید .
در غیر این صورت پست های شما حذف خواهند شد.
عنوان پست شما کمی تغییر کرد.
موفق باشید

tefos666
جمعه 11 دی 1388, 14:00 عصر
درباره XNA و DirectX میتونی تحقیق کنی من اطلاعات زیادی تو این زمینه ندارم ولی لینک زیر رو ببینی بد نیست ، ضمنا منظورت از نور پردازی چیه ؟ یک object خونه درست کردی و حالا میخوای نور رو توش کنترل کنی ؟ اگه اینه که یه لینک خوب دارم

http://www.codeproject.com/KB/directx/Directx_Game.aspx

یا یک آموزش تو لینک زیر هست البته بیشتر کار با سایه ها است
http://www.alpix.com/3d/TerrainViewer/index.html

اینم لینک آموزش کلی DirectX با C#
http://www.riemers.net/eng/Tutorials/DirectX/Csharp

اگه منظورت یک device سخت افزاری که میخوای رقص نور رو توش شبیه سازی کنی باید با زبان های دیگری مثل VC++ , VHL و امثال اینها اگر اشتباه نکرده باشم کار کنی ، و چیزی که میخوای قطعه کد DSP هستش با یکم جستجو راحت گیرت میاد.

Saeed.Masoumi
جمعه 11 دی 1388, 14:27 عصر
سلام دوست عزیز
ببین شما برای نور پردازی توی دایرکت ایکس دونوع نور پردازی کلی داریم
1-حاتی که یک نور خورشیدی در محیط وجود داشته باشد و در این صورت سایه ای وجود ندارد و فقط نور پردازی در محیط وجود دارد تا بتوانی اجسام رو ببینی (یک جوری خود دایرکت مدیریتش می کنه) که اصلا جالب نیست و حالت مصنوعی به شیپ ها می دهد
2- حالت دیگه اینه که خودت دستی نور رو کنترل کنی.حالا چه جوری؟یک روش استفاده از نور های خطی است
یعنی شما میای با بردار ها نور هارو می سازی من نمیدونم شما تا چه حد با دایرکت کار کردی (منظورم اینه که مخصاتش رو درست یاد داری یا نه؟بهش مسلطی یا نه)
ولی برای فعال کردن نور های برداری و کنترل آنها از روش زیر استفاده کنید.(نام دیوایست device در نظر گرفته شده)



device.RenderState.Lighting = true;
device.Lights[0].Type = LightType.Point;
device.Lights[0].Position = new Vector3();
device.Lights[0].Diffuse = System.Drawing.Color.White;
device.Lights[0].Attenuation0 = 0.2f;
device.Lights[0].Range = 10000.0f;
device.Lights[0].Commit();
device.Lights[0].Enabled = true;



این کد مربوط به نور های نقطه ای بود حالا اگه کد زیر رو استفاده کنی می تونی نورهای خطی هم بسازی:


device.Lights[0].Type = LightType.Directional;
البته این نور های خطی بیشتر برای زمانی میشه که بخوای برای اجسامت ماتریال استفاده کنی....
یکم با همینا کار کن فک کنم کارت راه بیافته
-----------------

اینم لینک آموزش کلی DirectX با C#‎
http://www.riemers.net/eng/Tutorials/DirectX/Csharp

لینک بهتری ندارید؟این یکم دردسر داره