private bool InitializeSentence(out Sentence sentence, int maxLength, Device device) { // Create a new sentence object. sentence = new Sentence(); // Initialize the sentence buffers to null; sentence.VertexBuffer = null; sentence.IndexBuffer = null; // Set the maximum length of the sentence. sentence.MaxLength = maxLength; // Set the number of vertices in vertex array. sentence.VertexCount = 6 * maxLength; // Set the number of vertices in the vertex array. sentence.IndexCount = sentence.VertexCount; // Create the vertex array. var vertices = new TextureShader.Vertex[sentence.VertexCount]; // Create the index array. var indices = new int[sentence.IndexCount]; // Initialize vertex array to zeros at first. foreach (var vertex in vertices) vertex.SetToZero(); // Initialize the index array. for (var i=0; i < sentence.IndexCount; i++) indices[i] = i; // Set up the description of the dynamic vertex buffer. var vertexBufferDesc = new BufferDescription() { Usage = ResourceUsage.Dynamic, SizeInBytes = Utilities.SizeOf<TextureShader.Vertex>() * sentence.VertexCount, BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.Write, OptionFlags = ResourceOptionFlags.None, StructureByteStride = 0 }; // Create the vertex buffer. sentence.VertexBuffer = Buffer.Create(device, vertices, vertexBufferDesc); // Create the index buffer. sentence.IndexBuffer = Buffer.Create(device, BindFlags.IndexBuffer, indices); return true; }
private bool InitializeBuffers(Device device) { try { // Set the number of the vertices and indices in the vertex and index array, accordingly. VertexCount = 6; IndexCount = 6; // Create the vertex array. var vertices = new TextureShader.Vertex[VertexCount]; // Initialize vertex array to zeroes at first. foreach (var vertex in vertices) vertex.SetToZero(); // Create the index array. var indices = new int[IndexCount]; // Load the index array with data. for (var i = 0; i < IndexCount; i++) indices[i] = i; // Set up the description of the static vertex buffer. var vertexBufferDesc = new BufferDescription() { Usage = ResourceUsage.Dynamic, SizeInBytes = Utilities.SizeOf<TextureShader.Vertex>() * VertexCount, BindFlags = BindFlags.VertexBuffer, CpuAccessFlags = CpuAccessFlags.Write, OptionFlags = ResourceOptionFlags.None, StructureByteStride = 0 }; // Create the vertex buffer. VertexBuffer = Buffer.Create(device, vertices, vertexBufferDesc); // Create the index buffer. IndexBuffer = Buffer.Create(device, BindFlags.IndexBuffer, indices); return true; } catch { return false; } }