ich habe eine Frage an euch Directx/ C# + Directx Coders.
Ich Arbeite momentan an einem Terrain Viewer für Metin2, den schreibe ich in C#.
Zur Darstellung von 2D und 3D verwende ich Directx.
Meine Frage bezieht sich auf das Texturieren eines Terrains:
Ich verwende eine tilemap "tile.raw" in der Abgespeichert ist, an welchen stellen sich die Texturen auf dem Terrain befinden.
Die "tile.raw" lade ich mit diesem Code:
Code:
private float[,] tileData;
private void loadTileMap()
{
tileData = new float[259, 259];
FileStream fs = new FileStream("C:\\Map Viewer\\tile.raw", FileMode.Open, FileAccess.Read);
BinaryReader tileMap = new BinaryReader(fs);
for (int X = 0;i< 258;i++)
{
for (int Y=0; Y< 258; Y++)
{
byte tile = (byte)(tileMap.ReadByte());
tileData[258 - 1 - Y, 258 - 1 - X] = tile;
}
}
tileMap.Close();
}
Momentan wird das Terrain nur durch die Vertex.Color texturiert.
Code:
private void VertexDeclaration()
{
vb = new VertexBuffer(typeof(CustomVertex.PositionColored), WIDTH * HEIGHT, device, Usage.Dynamic | Usage.WriteOnly, CustomVertex.PositionColored.Format, Pool.Default);
vertices = new CustomVertex.PositionColored[WIDTH * HEIGHT];
for (int x = 0; x < WIDTH; x++)
{
for (int y = 0; y < HEIGHT; y++)
{
vertices[x + y * WIDTH].Position = new Vector3(x, y, heightData[x, y]);
if (tileData[x, y] == 1) {
vertices[x + y * WIDTH].Color = Color.Orange.ToArgb();
} else if (tileData[x, y] == 3) {
vertices[x + y * WIDTH].Color = Color.YellowGreen.ToArgb();
} else if (tileData[x, y] == 4) {
vertices[x + y * WIDTH].Color = Color.Yellow.ToArgb();
} else if (tileData[x, y] == 5) {
vertices[x + y * WIDTH].Color = Color.Green.ToArgb();
} else if (tileData[x, y] == 6) {
vertices[x + y * WIDTH].Color = Color.LightGreen.ToArgb();
} else if (tileData[x, y] == 8) {
vertices[x + y * WIDTH].Color = Color.Gray.ToArgb();
} else if (tileData[x, y] == 9) {
vertices[x + y * WIDTH].Color = Color.Silver.ToArgb();
} else if (tileData[x, y] == 12) {
vertices[x + y * WIDTH].Color = Color.OrangeRed.ToArgb();
} else {
vertices[x + y * WIDTH].Color = Color.White.ToArgb();
}
}
}
vb.SetData(vertices, 0, LockFlags.None);
}

Ich möchte von euch Wissen, wie man Texturen aus einer Datei zbs . "gras.jpg" benutzt, ähnlich wie meine Methode :
Code:
} else if (tileData[x, y] == 12) {
vertices[x + y * WIDTH].Color = Color.OrangeRed.ToArgb();
(Hab auch schon Gegoogelt aber nichts geeignetes gefunden!)
Freue mich auf eure Antworten!!
Wäre dankbar wenn mir jemand weiterhelfen kann mit Source, Links zu Tutorials oder Beispielen!







