Exemplo n.º 1
0
void CScene::BuildObjects(ID3D11Device *pd3dDevice)
{
	CShader *pShader = new CShader();
	pShader->CreateShader(pd3dDevice);

	//객체(직육면체 객체와 사람 객체) 2개를 생성한다.
	m_nObjects = 2;
	m_ppObjects = new CGameObject*[m_nObjects];

	CCubeMesh *pCubeMesh = new CCubeMesh(pd3dDevice, 25.0f, 25.0f, 25.0f);
	CRotatingObject *pCubeObject = new CRotatingObject();
	pCubeObject->SetMesh(pCubeMesh);
	pCubeObject->SetShader(pShader);
	//직육면체 객체의 위치를 (-50.0f, 50.0f, 0.0f)로 설정한다.
	pCubeObject->m_d3dxmtxWorld._41 = -50.0f;
	pCubeObject->m_d3dxmtxWorld._42 = 50.0f;
	m_ppObjects[0] = pCubeObject;

	CHumanoidMesh *pHumanMesh = new CHumanoidMesh(pd3dDevice);
	CRotatingObject *pHumanObject = new CRotatingObject();
	pHumanObject->SetMesh(pHumanMesh);
	pHumanObject->SetShader(pShader);
	//사람 객체의 위치를 (20.0f, 0.0f, 0.0f)로 설정한다.
	pHumanObject->m_d3dxmtxWorld._41 = 20.0f;
	m_ppObjects[1] = pHumanObject;
}
Exemplo n.º 2
0
void CScene::BuildObjects(ID3D11Device *pd3dDevice)
{
	CShader *pShader = new CShader();
	pShader->CreateShader(pd3dDevice);

	m_nObjects = 51;
	m_ppObjects = new CGameObject*[m_nObjects];
	//가로x세로x높이가 15x15x15인 정육면체 메쉬를 생성한다.
	CCubeMesh *pMesh = new CCubeMesh(pd3dDevice, 50.0f, 50.0f, 50.0f); // random color cube draw
	CRotatingObject *pObject = new CRotatingObject();
	//pObject->SetPosition(0, 0, 0);
	pObject->SetMesh(pMesh);
	pObject->SetShader(pShader);
	m_ppObjects[0] = pObject;


	for (int i = 1; i <= 50; ++i)
	{
		CCubeMesh *pMesh = new CCubeMesh(pd3dDevice, 5.0f, 5.0f, 5.0f); // random color cube draw
		CRotatingObject *pObject = new CRotatingObject();
		pObject->SetPosition(-10.0f, 0, 0);
		pObject->SetMovingDirection(D3DXVECTOR3(float(rand() % 10) / 100.f, float(rand() % 10) / 100.f, float(rand() % 10) / 100.f));
		pObject->SetMovingSpeed(0.03f);

		pObject->SetMesh(pMesh);
		pObject->SetShader(pShader);
		
		m_ppObjects[i] = pObject;
	}
}
Exemplo n.º 3
0
void CScene::BuildObjects(ID3D11Device *pd3dDevice)
{
	CShader *pShader = new CShader();
	pShader->CreateShader(pd3dDevice);

	//가로x세로x높이가 12x12x12인 정육면체 메쉬를 생성한다.
	CCubeMesh *pMesh = new CCubeMesh(pd3dDevice, 15.0f, 15.0f, 15.0f);

	/*x-축, y-축, z-축 양의 방향의 객체 개수이다. 각 값을 1씩 늘려가면서 실행할 때 프레임 레이트가 어떻게 변하는 가를 살펴보기 바란다.*/
	int xObjects = 2, yObjects = 2, zObjects = 2;
	//<그림 2>와 같이 x-축, y-축, z-축으로 7개씩 총 7 x 7 x 7 = 343개의 정육면체를 배치한다. 
	m_nObjects = (xObjects * 2 + 1)*(yObjects * 2 + 1)*(zObjects * 2 + 1);
	m_ppObjects = new CGameObject*[m_nObjects];

	float fxPitch = 12.0f * 2.5f;
	float fyPitch = 12.0f * 2.5f;
	float fzPitch = 12.0f * 2.5f;
	CRotatingObject *pObject = NULL;
	for (int i = 0, z = +zObjects; z >= -zObjects; z--)
	{
		for (int y = -yObjects; y <= yObjects; y++)
		{
			for (int x = -xObjects; x <= xObjects; x++)
			{
				pObject = new CRotatingObject();
				pObject->SetMesh(pMesh);
				pObject->SetShader(pShader);
				//각 정육면체 객체의 위치를 설정한다.
				pObject->SetPosition(fxPitch*x, fyPitch*y, fzPitch*z);
				m_ppObjects[i++] = pObject;
			}
		}
	}
}
Exemplo n.º 4
0
void CScene::BuildObjects(ID3D11Device *pd3dDevice)
{
	CShader *pShader = new CShader();
	pShader->CreateShader(pd3dDevice);

	//가로x세로x높이가 12x12x12인 정육면체 메쉬를 생성한다(기본 색상은 파란색).
	CCubeMesh *pCubeMesh = new CCubeMesh(pd3dDevice, 12.0f, 12.0f, 12.0f, D3DCOLOR_XRGB(0, 0, 128));

	int xObjects = 5, yObjects = 5, zObjects = 5, i = 0;
	/*<그림 21>과 같이 x-축, y-축, z-축으로 11개씩 총 11 x 11 x 11 = 1,331개의 정육면체를 배치한다. x-축, y-축, z-축에서 원점의 왼쪽으로 5개, 오른쪽으로 5개, 축 위에 1개 배치한다.*/
	m_nObjects = (xObjects * 2 + 1)*(yObjects * 2 + 1)*(zObjects * 2 + 1);
	m_ppObjects = new CGameObject*[m_nObjects];

	float fxPitch = 12.0f * 2.5f;
	float fyPitch = 12.0f * 2.5f;
	float fzPitch = 12.0f * 2.5f;
	//정육면체 객체는 자전한다.
	CRotatingObject *pRotatingObject = NULL;
	for (int x = -xObjects; x <= xObjects; x++)
	{
		for (int y = -yObjects; y <= yObjects; y++)
		{
			for (int z = -zObjects; z <= zObjects; z++)
			{
				pRotatingObject = new CRotatingObject();
				pRotatingObject->SetMesh(pCubeMesh);
				pRotatingObject->SetShader(pShader);
				//각 정육면체 객체의 위치를 설정한다.
				pRotatingObject->SetPosition(fxPitch*x, fyPitch*y, fzPitch*z);
				//각 정육면체 객체의 회전축을 y-축으로 설정한다.
				pRotatingObject->SetRotationAxis(D3DXVECTOR3(0.0f, 1.0f, 0.0f));
				pRotatingObject->SetRotationSpeed(30.0f + 10.0f*(i % 10));
				m_ppObjects[i++] = pRotatingObject;
			}
		}
	}
}