Ejemplo n.º 1
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderScaler(XMMATRIX& tm)
{
	SetWorldTM(tm);

	IShaderMgr* pShaderMgr = GLOBAL::ShaderMgr();
	IRenderStrategy* pRenderer = GLOBAL::RDevice()->GetRenderStrategy();

	pShaderMgr->Begin(SHADER_POS_VS, SHADER_COLOR_PS);

	CVector4 color = CVector4(0,0,0,1);
	pShaderMgr->SetShaderConstant( &color, sizeof(color), 9, VERTEX_SHADER);
	pRenderer->RenderGeometry(&m_BoxX);

	color = CVector4(0,0,1,0);
	pShaderMgr->SetShaderConstant( &color, sizeof(color), 9, VERTEX_SHADER);	
	pRenderer->RenderGeometry(&m_BoxY);

	color = CVector4(0,1,0,0);
	pShaderMgr->SetShaderConstant( &color, sizeof(color), 9, VERTEX_SHADER);
	pRenderer->RenderGeometry(&m_BoxZ);
	
	color = CVector4(0,0.5f, 0.5f, 0.5f);
	pShaderMgr->SetShaderConstant( &color, sizeof(color), 9, VERTEX_SHADER);
	pRenderer->RenderGeometry(&m_BoxCenter);

	RenderAxis(tm);
}
Ejemplo n.º 2
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderAxis(XMMATRIX& tm)
{
	SetWorldTM(tm);

	// Set Line Shader
	GLOBAL::ShaderMgr()->Begin(SHADER_POS_VS, SHADER_COLOR_PS);

	CVertexPC v1;

	v1.vPos = CVector3(0.0f, 0.0f, 0.0f);
	v1.color = COLOR_RED;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(HELPER_OBJ_SCALE, 0.0f, 0.0f);
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0.0f, 0.0f);
	v1.color = COLOR_BLUE;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0.0f, HELPER_OBJ_SCALE);
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0, 0.0f);
	v1.color = COLOR_GREEN;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, HELPER_OBJ_SCALE, 0.0f);
	m_LineVertices.Add(v1);

	GLOBAL::RenderStateMgr()->SetDepthStancil(DEPTH_OFF_STENCIL_OFF);
	DrawLine();
}
Ejemplo n.º 3
0
//-----------------------------------------------------------------------------//
// 외부에서 온 명령들을 이함수에서 처리한다.
//-----------------------------------------------------------------------------//
void CCharacter::Command( SMsg Msg )
{
	switch( Msg.type )
	{
	case MSG_KEYDOWN:
		KeyProc( Msg.lparam, Msg.wparam );
		break;

	case MSG_SETPOS:
		{
			Matrix44 mat;
			Vector3 *pv = (Vector3*)Msg.lparam;
			mat.SetWorld( *pv );
			SetWorldTM( &mat );
		}
		break;

	case MSG_MOVPOS:
		{

		}
		break;
	}

}
Ejemplo n.º 4
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderPlane(XMMATRIX& tm, CVector2 size)
{
	XMMATRIX mtWorld = XMMatrixMultiply( tm, XMMatrixScaling(size.x, size.y, 1) );

	SetWorldTM(mtWorld);

	GLOBAL::ShaderMgr()->Begin(SHADER_QUAD_VS, SHADER_TEXURE_PS);
	
	GLOBAL::RenderStateMgr()->SetTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
	GLOBAL::RenderStateMgr()->SetVertexInput(FVF_QUAD);
	GLOBAL::D3DContext()->Draw(4, 0);
}
Ejemplo n.º 5
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderSphere(CVector3* pos, float radius)
{	
	XMMATRIX mtWorld = XMMatrixIdentity();

	mtWorld	= XMMatrixMultiply( mtWorld, XMMatrixScaling(radius, radius, radius) );
	mtWorld.r[3].x = pos->x;
	mtWorld.r[3].y = pos->y;
	mtWorld.r[3].z = pos->z;


	SetWorldTM(mtWorld);

	GLOBAL::ShaderMgr()->Begin(SHADER_POS_VS, SHADER_COLOR_PS);
	GLOBAL::RenderStateMgr()->SetRasterizer(RASTERIZER_WIRE);
	GLOBAL::RDevice()->GetRenderStrategy()->RenderGeometry(&m_Sphere);
}
Ejemplo n.º 6
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderLine( CVertexPC* pVetex, int count)
{
	SetWorldTM( XMMatrixIdentity() );

	CVertexPC v1;
	v1.color = COLOR_RED;

	for( int i=0; i < count; ++i)
		m_LineVertices.Add( pVetex[i]);

	// Set Line Shader
	GLOBAL::ShaderMgr()->Begin(SHADER_POS_VS, SHADER_COLOR_PS);
	CVector4 color = CVector4(0,1,1,1);
	GLOBAL::ShaderMgr()->SetShaderConstant( &color, sizeof(color), 9, VERTEX_SHADER);
	GLOBAL::RenderStateMgr()->SetDepthStancil(DEPTH_OFF_STENCIL_OFF);
	
	DrawLine();
}
Ejemplo n.º 7
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderBox(XMMATRIX& mtWorld, CVector3& min, CVector3& max, DWORD color)
{
	SetWorldTM(mtWorld);

	BOX_MAKE_PARAM param;
	param.min = min;
	param.max = max;
	param.offset = CVector3(0, 0, 0);

	CVertexPC* pVertices = NULL;
	CGEOMETRY_CONSTRUCTOR::CreateBoxLine( param, &pVertices);

	for (int i =0 ; i< 24; i++)
	{
		pVertices[i].color = color;
		m_LineVertices.Add(pVertices[i]);
	}
	SAFE_DELETE_ARRAY(pVertices);

	GLOBAL::ShaderMgr()->Begin(SHADER_COLOR_VS, SHADER_COLOR_PS);
	GLOBAL::RenderStateMgr()->SetDepthStancil(DEPTH_ON_STENCIL_OFF);
	DrawLine();
}
Ejemplo n.º 8
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderWorldGrid(XMMATRIX& mtWorld, int size, int lineCount)
{
	RenderPlane(mtWorld, CVector2(100,100));
	SetWorldTM(mtWorld);

	float halfWidth = size/2.f;
	float lineWidth = size/50.f;

	CVertexPC v1,v2;

	for(int i = 0 ; i < lineCount ;  i += 2)
	{

		v1.vPos.x = halfWidth - i/2 * lineWidth;
		v2.vPos.x = v1.vPos.x;

		v1.vPos.z = 0;
		v2.vPos.z = 0;

		if( i== 50 )
		{
			v1.vPos.y = 0;
			v2.vPos.y = -halfWidth;
		}
		else
		{
			v1.vPos.y = halfWidth;
			v2.vPos.y = -halfWidth;
		}

		v1.color = COLOR_GRAY;
		v2.color = COLOR_GRAY;

		m_LineVertices.Add(v1);
		m_LineVertices.Add(v2);
	}

	for(int i = lineCount ; i < lineCount *2 ; i += 2)
	{
		v1.vPos.y = halfWidth - ( i - lineCount )/2 * lineWidth;
		v2.vPos.y = v1.vPos.y;

		v1.vPos.z = 0;
		v2.vPos.z = 0;

		if( i== 150 )
		{
			v1.vPos.x = 0;
			v2.vPos.x = -halfWidth;
		}
		else
		{
			v1.vPos.x = halfWidth;
			v2.vPos.x = -halfWidth;
		}

		v1.color = COLOR_GRAY;
		v2.color = COLOR_GRAY;

		m_LineVertices.Add(v1);
		m_LineVertices.Add(v2);
	}
	
	v1.vPos = CVector3(0.0f, 0.0f, 0.0f);
	v1.color = COLOR_RED;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(halfWidth, 0.0f, 0.0f);
	v1.color = COLOR_RED;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0.0f, 0.0f);
	v1.color = COLOR_BLUE;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0.0f, halfWidth);
	v1.color = COLOR_BLUE;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, 0, 0.0f);
	v1.color = COLOR_GREEN;
	m_LineVertices.Add(v1);

	v1.vPos = CVector3(0.0f, halfWidth, 0.0f);
	v1.color = COLOR_GREEN;
	m_LineVertices.Add(v1);

	GLOBAL::ShaderMgr()->Begin(SHADER_COLOR_VS, SHADER_COLOR_PS);
	DrawLine();
}
Ejemplo n.º 9
0
//--------------------------------------------------------------------------------------------------------------------
void RDX11RenderHelper::RenderRotator(XMMATRIX& tm)
{
	SetWorldTM(tm);

	GLOBAL::ShaderMgr()->Begin(SHADER_COLOR_VS, SHADER_COLOR_PS);
	GLOBAL::RenderStateMgr()->SetDepthStancil(DEPTH_OFF_STENCIL_OFF);

	CVertexPC v1;

	for( int iRing = 0; iRing < 2; ++iRing )
	{
		float radius = HELPER_OBJ_SCALE + iRing * 2.f;
		UINT segment = 20;

		v1.vPos.x = 0.0f;
		v1.color = COLOR_RED;
		for( UINT i= 0; i < segment ; ++i)
		{
			float angle = XM_2PI * i/float(segment);
			v1.vPos.y = radius * cos( angle);
			v1.vPos.z = radius * sin( angle);
			m_LineVertices.Add(v1);

			angle = XM_2PI * (i +1)/float(segment);
			v1.vPos.y = radius * cos( angle);
			v1.vPos.z = radius * sin( angle);
			m_LineVertices.Add(v1);
		}
		DrawLine();

		v1.vPos.y = 0.0f;
		v1.color = COLOR_GREEN;
		for( UINT i= 0; i < segment ; ++i)
		{
			float angle = XM_2PI * i/float(segment);
			v1.vPos.z = radius * cos( angle);
			v1.vPos.x = radius * sin( angle);
			m_LineVertices.Add(v1);

			angle = XM_2PI * (i +1)/float(segment);
			v1.vPos.z = radius * cos( angle);
			v1.vPos.x = radius * sin( angle);
			m_LineVertices.Add(v1);
		}

		DrawLine();

		v1.vPos.z = 0.0f;
		v1.color = COLOR_BLUE;
		for( UINT i= 0; i < segment ; ++i)
		{
			float angle = XM_2PI * i/float(segment);
			v1.vPos.x = radius * cos( angle);
			v1.vPos.y = radius * sin( angle);
			m_LineVertices.Add(v1);

			angle = XM_2PI * (i +1)/float(segment);
			v1.vPos.x = radius * cos( angle);
			v1.vPos.y = radius * sin( angle);
			m_LineVertices.Add(v1);
		}

		DrawLine();
	}

	RenderAxis(tm);
}