/// <summary> /// <para>Instanciate a new <see cref="TerrainVertex"/>.</para> /// </summary> /// <param name="value"></param> public TerrainVertex(VertexPositionNormalTextureTangentBinormal value) { this._bufferIndice = 0; this._lastUsedIteration = -1; this._references = new Vector<QuadNode>(); this._value = value; }
public Floor(GraphicsDevice graphics, Texture2D texture, Texture2D normalMap, ushort width, ushort height, Vector3 position) : base(null, position, 0) { _texture = texture; _normalMap = normalMap; _position = position; VertexPositionNormalTextureTangentBinormal[] verticeData = new VertexPositionNormalTextureTangentBinormal[width * height * 6]; ushort index = 0; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x, 0, y); verticeData[index].TextureCoordinate = new Vector2(0, 0); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x + 1, 0, y); verticeData[index].TextureCoordinate = new Vector2(1, 0); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x, 0, y + 1); verticeData[index].TextureCoordinate = new Vector2(0, 1); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; _primitiveCount++; verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x, 0, y + 1); verticeData[index].TextureCoordinate = new Vector2(0, 1); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x + 1, 0, y); verticeData[index].TextureCoordinate = new Vector2(1, 0); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; verticeData[index] = new VertexPositionNormalTextureTangentBinormal(); verticeData[index].Position = new Vector3(x + 1, 0, y + 1); verticeData[index].TextureCoordinate = new Vector2(1, 1); verticeData[index].Normal = Vector3.Up; verticeData[index].Tangent = Vector3.Forward; verticeData[index].Binormal = Vector3.Cross(Vector3.Up, Vector3.Forward); index++; _primitiveCount++; } } _vertexBuffer = new VertexBuffer(graphics, typeof(VertexPositionNormalTextureTangentBinormal), verticeData.Length, BufferUsage.WriteOnly); _vertexBuffer.SetData(verticeData); }