DebugSphere::DebugSphere(int pPerimiterPoints, ID3D11Device* p_device, ID3D11DeviceContext* p_deviceContext)
{
	m_device = p_device;
	m_deviceContext = p_deviceContext;

	AglSphereMesh sm;
	vector<VertexPC> v = vector<VertexPC>(sm.positions.size());
	for (int i = 0; i < v.size(); i++)
	{
		if (sm.positions[i].x > 0)
			v[i] = VertexPC(sm.positions[i], sm.normals[i], AglVector4(0, 0, 1, 1));
		else
			v[i] = VertexPC(sm.positions[i], sm.normals[i], AglVector4(1, 1, 0, 1));
	}

	m_indexCount = sm.indices.size();


	//Create Vertex Buffer
	D3D11_BUFFER_DESC bd;
	ZeroMemory(&bd, sizeof(bd));
	bd.Usage = D3D11_USAGE_DYNAMIC;
	bd.ByteWidth = sizeof(VertexPC) * v.size();
	bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
	bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;

	D3D11_SUBRESOURCE_DATA vertexData;
	vertexData.pSysMem = &v[0];
	vertexData.SysMemPitch = 0;
	vertexData.SysMemSlicePitch = 0;

	m_device->CreateBuffer(&bd, &vertexData, &m_vb);
	
	D3D11_BUFFER_DESC ibd;
	ibd.Usage = D3D11_USAGE_DEFAULT;
	ibd.ByteWidth = sizeof(unsigned int) * sm.indices.size();
	ibd.BindFlags = D3D11_BIND_INDEX_BUFFER;
	ibd.CPUAccessFlags = 0;
	ibd.MiscFlags = 0;
	ibd.StructureByteStride = 0;

	D3D11_SUBRESOURCE_DATA indexData;
	indexData.pSysMem = &sm.indices[0];
	indexData.SysMemPitch = 0;
	indexData.SysMemSlicePitch = 0;

	m_device->CreateBuffer(&ibd, &indexData, &m_ib);
}
Example #2
0
void LineRenderer::DrawAABB(const AABB& aabb, const float4& color)
{
    float3 min = aabb.Min();
    float3 max = aabb.Max(); 
    

    // render top quad    
    m_vertsPC.push_back(VertexPC(max,color));      
    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,max.z),color));

    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,max.z),color));
    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,min.z),color));

    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,min.z),color));
    m_vertsPC.push_back(VertexPC(float3(max.x,max.y,min.z),color));

    m_vertsPC.push_back(VertexPC(float3(max.x,max.y,min.z),color));
    m_vertsPC.push_back(VertexPC(max,color));

    // render bottom quad
    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,max.z),color));      
    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,max.z),color));

    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,max.z),color));
    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,min.z),color));

    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,min.z),color));
    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,min.z),color));

    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,min.z),color));
    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,max.z),color));

    // four legs
    m_vertsPC.push_back(VertexPC(max,color));  
    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,max.z),color));      

    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,max.z),color));
    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,max.z),color));

    m_vertsPC.push_back(VertexPC(float3(min.x,max.y,min.z),color));
    m_vertsPC.push_back(VertexPC(float3(min.x,min.y,min.z),color));

    m_vertsPC.push_back(VertexPC(float3(max.x,max.y,min.z),color));
    m_vertsPC.push_back(VertexPC(float3(max.x,min.y,min.z),color));

}
Example #3
0
void LineRenderer::DrawFrustum(const Frustum& frustum, const float4& color)
{
    float3 corners[8];
    frustum.GetCorners(corners);

    m_vertsPC.push_back(VertexPC(corners[0],color));      
    m_vertsPC.push_back(VertexPC(corners[1],color));      

    m_vertsPC.push_back(VertexPC(corners[1],color));      
    m_vertsPC.push_back(VertexPC(corners[2],color));      

    m_vertsPC.push_back(VertexPC(corners[2],color));      
    m_vertsPC.push_back(VertexPC(corners[3],color));      

    m_vertsPC.push_back(VertexPC(corners[3],color));      
    m_vertsPC.push_back(VertexPC(corners[0],color));      
    
    m_vertsPC.push_back(VertexPC(corners[4],color));      
    m_vertsPC.push_back(VertexPC(corners[5],color));      

    m_vertsPC.push_back(VertexPC(corners[5],color));      
    m_vertsPC.push_back(VertexPC(corners[6],color));      

    m_vertsPC.push_back(VertexPC(corners[6],color));      
    m_vertsPC.push_back(VertexPC(corners[7],color));      

    m_vertsPC.push_back(VertexPC(corners[7],color));      
    m_vertsPC.push_back(VertexPC(corners[4],color));      
    
    m_vertsPC.push_back(VertexPC(corners[0],color));      
    m_vertsPC.push_back(VertexPC(corners[4],color));      

    m_vertsPC.push_back(VertexPC(corners[1],color));      
    m_vertsPC.push_back(VertexPC(corners[5],color));      

    m_vertsPC.push_back(VertexPC(corners[2],color));      
    m_vertsPC.push_back(VertexPC(corners[6],color));      

    m_vertsPC.push_back(VertexPC(corners[3],color));      
    m_vertsPC.push_back(VertexPC(corners[7],color));      



}