У меня проблема с использованием DrawUserPrimitives для моего самого первого проекта моногейма. Я пытаюсь сделать несколько фрагментов, которые должны выглядеть как ландшафт. И это работает ... так или иначе. Вот как это выглядит:monogame weird grid texture
My terrain -_-. Sorry, I cant post it directly because of 0 reputation
Каждая плитка выглядит следующим образом:
Single tile with a white border
Как вы можете видеть каждый плитка имеет 1px белую кайму. Я думаю, это единственный источник белых линий.
Задача: Мне не нравятся эти белые горизонтальные линии (не граница вокруг каждой плитки, все в порядке).
Так что мой вопрос:: Как избавиться от них. Что не так с моим кодом?
Каждая ячейка создается этот код:
// [ ][ ][ ]
// [ ][ ][ ]
// [x ][ ][ ]
primitiveList[0].Position = new Vector3(0 + startpos.X, 0, 0 + startpos.Z);
primitiveList[0].TextureCoordinate.X = 0;
primitiveList[0].TextureCoordinate.Y = 1;
// [ ][ ][ ]
// [ ][ ][ ]
// [ ][ ][x]
primitiveList[1].Position = new Vector3(1 + startpos.X, 0, 0 + startpos.Z);
primitiveList[1].TextureCoordinate.X = 1;
primitiveList[1].TextureCoordinate.Y = 1;
// [ ][ ][x ]
// [ ][ ][ ]
// [ ][ ][ ]
primitiveList[2].Position = new Vector3(1 + startpos.X, 0, 1 + startpos.Z);
primitiveList[2].TextureCoordinate.X = 1;
primitiveList[2].TextureCoordinate.Y = 0;
// Ergibt:
// [ ][ ][x]
// [ ][ ][ ]
// [x][ ][x]
// [ ][ ][x]
// [ ][ ][ ]
// [ ][ ][ ]
primitiveList[3].Position = new Vector3(1 + startpos.X, 0, 1 + startpos.Z);
primitiveList[3].TextureCoordinate.X = 1;
primitiveList[3].TextureCoordinate.Y = 0;
// [x][ ][ ]
// [ ][ ][ ]
// [ ][ ][ ]
primitiveList[4].Position = new Vector3(0 + startpos.X, 0, 1 + startpos.Z);
primitiveList[4].TextureCoordinate.X = 0;
primitiveList[4].TextureCoordinate.Y = 0;
// [ ][ ][ ]
// [ ][ ][ ]
// [x][ ][ ]
primitiveList[5].Position = new Vector3(0 + startpos.X, 0, 0 + startpos.Z);
primitiveList[4].TextureCoordinate.X = 0;
primitiveList[4].TextureCoordinate.Y = 1;
и код рисования:
_graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
foreach (var pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
}
_graphics.GraphicsDevice.DrawUserPrimitives<VertexPositionNormalTexture>(PrimitiveType.TriangleList, _terrainManager.TerrainVertices, 0, _terrainManager.TerrainVertices.Length/3,VertexPositionNormalTexture.VertexDeclaration);
Установка эффекта:
if (effect == null)
{
effect = new BasicEffect(_graphics.GraphicsDevice);
/*effect.CurrentTechnique = effect.Techniques ["BasicEffect_PixelLighting_Texture"];
*/
effect.EnableDefaultLighting();
effect.TextureEnabled = true;
effect.Texture = _grassGrid;
var state = new RasterizerState { MultiSampleAntiAlias = true };
state.DepthBias = 100.0f;
effect.GraphicsDevice.RasterizerState = state;
/*foreach (var lol in effect.Techniques)
{
Console.WriteLine (lol.Name);
}*/
//effect.CurrentTechnique = effect.Techniques ["BasicEffect_Texture"];
_graphics.PreferMultiSampling = true;
_graphics.GraphicsDevice.PresentationParameters.MultiSampleCount = 4;
//_graphics.ApplyChanges();
Я просто не могу» t выяснить, где проблема. По крайней мере, через 3 часа поиска/попытки и ошибки. Я также попробовал включить несколько мультисэмплинг. Но это не имеет никакого эффекта. Я не знаю достаточно, чтобы просто догадаться, что здесь может быть неправильно. Мне не нужно решение (хотя это будет хорошо :)). Подсказка была бы потрясающей. Заранее спасибо за помощь!
Это было! Мне нужны новые очки, или было уже слишком поздно. Большое спасибо! – sereschkin