virtual void InitRHI() override
	{
		FRHIResourceCreateInfo CreateInfo;
		void* Buffer = nullptr;
		IndexBufferRHI = RHICreateAndLockIndexBuffer(sizeof(int32), Indices.Num() * sizeof(int32), BUF_Static, CreateInfo, Buffer);

		// Write the indices to the index buffer.		
		FMemory::Memcpy(Buffer, Indices.GetData(), Indices.Num() * sizeof(int32));
		RHIUnlockIndexBuffer(IndexBufferRHI);
	}
	void InitRHI()
	{
		FRHIResourceCreateInfo CreateInfo;
		void* Buffer = nullptr;
		IndexBufferRHI = RHICreateAndLockIndexBuffer(sizeof(uint16), Indices.Num() * sizeof(uint16), BUF_Static, CreateInfo, Buffer);

		// Copy the index data into the index buffer.		
		FMemory::Memcpy(Buffer, Indices.GetData(), Indices.Num() * sizeof(uint16));
		RHIUnlockIndexBuffer(IndexBufferRHI);
	}
	virtual void InitRHI() override
	{
		const uint32 MaxBatchedPrimitives = FOcclusionQueryBatcher::OccludedPrimitiveQueryBatchSize;
		const uint32 Stride = sizeof(uint16);
		const uint32 SizeInBytes = MaxBatchedPrimitives * NUM_CUBE_VERTICES * Stride;

		FRHIResourceCreateInfo CreateInfo;

		void* BufferData;
		IndexBufferRHI = RHICreateAndLockIndexBuffer(Stride, SizeInBytes, BUF_Static, CreateInfo, BufferData);
		uint16* RESTRICT Indices = (uint16*)BufferData;

		for(uint32 PrimitiveIndex = 0;PrimitiveIndex < MaxBatchedPrimitives;PrimitiveIndex++)
		{
			for(int32 Index = 0;Index < NUM_CUBE_VERTICES;Index++)
			{
				Indices[PrimitiveIndex * NUM_CUBE_VERTICES + Index] = PrimitiveIndex * 8 + GCubeIndices[Index];
			}
		}
		RHIUnlockIndexBuffer(IndexBufferRHI);
	}
/**
 * Creates an index buffer for drawing an individual sprite.
 */
void FParticleIndexBuffer::InitRHI()
{
    // Instanced path needs only MAX_PARTICLES_PER_INSTANCE,
    // but using the maximum needed for the non-instanced path
    // in prep for future flipping of both instanced and non-instanced at runtime.
    const uint32 MaxParticles = 65536 / 4;
    const uint32 Size = sizeof(uint16) * 6 * MaxParticles;
    const uint32 Stride = sizeof(uint16);
    FRHIResourceCreateInfo CreateInfo;
    void* Buffer = nullptr;
    IndexBufferRHI = RHICreateAndLockIndexBuffer( Stride, Size, BUF_Static, CreateInfo, Buffer);
    uint16* Indices = (uint16*)Buffer;
    for (uint32 SpriteIndex = 0; SpriteIndex < MaxParticles; ++SpriteIndex)
    {
        Indices[SpriteIndex*6 + 0] = SpriteIndex*4 + 0;
        Indices[SpriteIndex*6 + 1] = SpriteIndex*4 + 2;
        Indices[SpriteIndex*6 + 2] = SpriteIndex*4 + 3;
        Indices[SpriteIndex*6 + 3] = SpriteIndex*4 + 0;
        Indices[SpriteIndex*6 + 4] = SpriteIndex*4 + 1;
        Indices[SpriteIndex*6 + 5] = SpriteIndex*4 + 2;
    }
    RHIUnlockIndexBuffer( IndexBufferRHI );
}