0
我有一個問題,使用DrawUserPrimitives爲我的第一個monogame項目。我正在嘗試繪製應該看起來像地形的多個貼圖。它的工作原理......以某種方式。這是它的樣子:monogame奇怪的網格紋理
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();
我只是」找出問題所在。至少經過3個小時的搜索/嘗試和錯誤。我也嘗試過一些多重抽樣。但那絕對沒有影響。我不知道這裏有什麼可能是錯誤的。我不需要一個解決方案(雖然那會很好:))。一個提示將是真棒。感謝您的幫助!
就是這樣!我需要新的眼鏡,或者爲時已晚。非常感謝你! – sereschkin