Exemplo n.º 1
0
void CGraphics::DrawBox(float fLeft, float fTop, float fWidth, float fHeight, DWORD dwColorBox)
{
	/*
	// Begin the sprite
	m_pSprite->Begin( D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_TEXTURE );

	// Generate the matrix
	D3DXMATRIX matrix;
	D3DXMatrixTransformation2D( &matrix, NULL, 0.0f, &D3DXVECTOR2( fWidth, fHeight ), NULL, 0.0f, &D3DXVECTOR2( fLeft, fTop ) );

	// Set the sprite transform
	m_pSprite->SetTransform( &matrix );

	// Draw the box
	m_pSprite->Draw( m_pPixelTexture, NULL, NULL, NULL, dwColorBox );

	// End the sprite*
	m_pSprite->End( );*/

    D3DVERTEX vertex[4];
	vertex[0] = D3DVERTEX(fLeft, fTop, 0.0f, 1.0f, dwColorBox);
    vertex[1] = D3DVERTEX((fLeft + fWidth), fTop, 0.0f, 1.0f, dwColorBox);
    vertex[2] = D3DVERTEX((fLeft + fWidth), (fTop + fHeight), 0.0f, 1.0f, dwColorBox);
    vertex[3] = D3DVERTEX(fLeft, (fTop + fHeight), 0.0f, 1.0f, dwColorBox);
    short indices[6] = {0,1,2,0,2,3};

    m_pDevice->SetTexture(0, NULL);
    m_pDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
    m_pDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, &indices[0], D3DFMT_INDEX16, &vertex[0], sizeof(D3DVERTEX));
 
}
Exemplo n.º 2
0
CSelectSrv::CSelectSrv():CBMWnd()
{
	m_ppxSrvBtn = NULL;
	D3DVECTOR vNorm(0, 0, -1);
    m_avBillBoard[0]  = D3DVERTEX(D3DVECTOR(-0.5f, 0.5f, 0), vNorm, 0, 0);
    m_avBillBoard[1]  = D3DVERTEX(D3DVECTOR(-0.5f,-0.5f, 0), vNorm, 0, 1);
    m_avBillBoard[2]  = D3DVERTEX(D3DVECTOR( 0.5f, 0.5f, 0), vNorm, 1, 0);
    m_avBillBoard[3]  = D3DVERTEX(D3DVECTOR( 0.5f,-0.5f, 0), vNorm, 1, 1);
}
Exemplo n.º 3
0
void RenderSquareShadow(LPDIRECT3DDEVICE7 lpDevice,float x,float y,float z,float w,float h)
{
    WORD wIndices[] = { 
		0,1,2,
		3,2,1,
		1,5,3,
		3,5,7, 
		0,4,1,
		1,4,5, 
		0,2,4,
		4,2,6, 
		2,3,6,
		6,3,7,
	};

	D3DLIGHT7 light;
	lpDevice->GetLight(0,&light);
	D3DVECTOR length=Normalize(light.dvDirection)*(-100);

	D3DVERTEX v[8];

    v[0] = D3DVERTEX( D3DVECTOR( x-w/2, y, z-h/2 ),D3DVECTOR(0,1,0), 0, 1 );
    v[1] = D3DVERTEX( D3DVECTOR( x-w/2, y,  z+h/2 ),D3DVECTOR(0,1,0), 0, 0 );
    v[2] = D3DVERTEX( D3DVECTOR( x+w/2, y, z-h/2 ),D3DVECTOR(0,1,0), 1, 1 );
    v[3] = D3DVERTEX( D3DVECTOR( x+w/2, y,  z+h/2 ),D3DVECTOR(0,1,0), 1, 0 );

    v[4] = D3DVERTEX( D3DVECTOR( x-w/2, y, z-h/2 )-length,D3DVECTOR(0,1,0), 0, 0 );
    v[5] = D3DVERTEX( D3DVECTOR( x-w/2, y,  z+h/2 )-length,D3DVECTOR(0,1,0), 0, 0 );
    v[6] = D3DVERTEX( D3DVECTOR( x+w/2, y, z-h/2 )-length,D3DVECTOR(0,1,0), 0, 0 );
    v[7] = D3DVERTEX( D3DVECTOR( x+w/2, y,  z+h/2 )-length,D3DVECTOR(0,1,0), 0, 0 );

	RenderShadow(lpDevice,v,8,wIndices,sizeof(wIndices)/sizeof(wIndices[0]));
}
Exemplo n.º 4
0
VOID CImageHandler::InitAllImage()
{
	for ( INT nCnt = 0; nCnt < _MAX_IMAGE; nCnt++ )
		m_xImageList[nCnt].Init();

	ZeroMemory(m_nLoadedMagic, sizeof(INT)*_MAX_MAGIC);

 	D3DVECTOR vNorm(0, 0, -1);
	m_avBillBoard[0]  = D3DVERTEX(D3DVECTOR(-0.5f, 0.5f, 0), vNorm, 0, 0);
	m_avBillBoard[1]  = D3DVERTEX(D3DVECTOR(-0.5f,-0.5f, 0), vNorm, 0, 1);
	m_avBillBoard[2]  = D3DVERTEX(D3DVECTOR( 0.5f, 0.5f, 0), vNorm, 1, 0);
	m_avBillBoard[3]  = D3DVERTEX(D3DVECTOR( 0.5f,-0.5f, 0), vNorm, 1, 1);

	for ( nCnt = 0; nCnt < _MAX_TEXTR_FILE; nCnt++ )
	{
		m_xTextrFileList[nCnt].ClearAllNodes();
	}
}
Exemplo n.º 5
0
//---フィールド頂点を初期化
CRBATINIT_API int crbatInitFieldVertex(void)
{
	int a,x,y;

	D3DVECTOR vNormal( D3DVAL(0.0f), D3DVAL(1.0f), D3DVAL(0.0f) );
	D3DVECTOR vNormal2( D3DVAL(0.0f), D3DVAL(-1.0f), D3DVAL(0.0f) );
	D3DVECTOR p1(D3DVAL(-0.5f) , D3DVAL(0.0f) , D3DVAL(-0.5f));
	D3DVECTOR p2( D3DVAL(0.5f) , D3DVAL(0.0f) , D3DVAL(-0.5f));
	D3DVECTOR p3(D3DVAL(-0.5f) , D3DVAL(0.0f) , D3DVAL( 0.5f));
	D3DVECTOR p4( D3DVAL(0.5f) , D3DVAL(0.0f) , D3DVAL( 0.5f));
/*
	D3DVECTOR vNormal( D3DVAL(0.0f), D3DVAL(1.0f), D3DVAL(0.0f) );
	D3DVECTOR vNormal2( D3DVAL(0.0f), D3DVAL(-1.0f), D3DVAL(0.0f) );
	D3DVECTOR p1(D3DVAL(-0.5f) , D3DVAL(-0.5f) , D3DVAL(0.0f));
	D3DVECTOR p2( D3DVAL(0.5f) , D3DVAL(-0.5f) , D3DVAL(0.0f));
	D3DVECTOR p3(D3DVAL(-0.5f) , D3DVAL(0.5f) , D3DVAL( 0.0f));
	D3DVECTOR p4( D3DVAL(0.5f) , D3DVAL(0.5f) , D3DVAL( 0.0f));
*/
	for(y = 0;y < BATTLEFIELD_VERTEXCOUNT_Y;y ++){
		for(x = 0;x < BATTLEFIELD_VERTEXCOUNT_X;x ++){
			BattleField[x][y].Vertex[0] = D3DVERTEX( p1, vNormal,D3DVAL(0.0f),D3DVAL(0.0f));
			BattleField[x][y].Vertex[1] = D3DVERTEX( p2, vNormal,D3DVAL(1.0f),D3DVAL(0.0f));
			BattleField[x][y].Vertex[2] = D3DVERTEX( p3, vNormal,D3DVAL(0.0f),D3DVAL(1.0f));
			BattleField[x][y].Vertex[3] = D3DVERTEX( p4, vNormal,D3DVAL(1.0f),D3DVAL(1.0f));

			for(a = 0;a < 4;a ++){
				BattleField[x][y].Vertex[a].x += (float)((float)x * 1.0f);
				BattleField[x][y].Vertex[a].z += (float)((float)y * 1.0f);
			}

//			BattleField[x][y].TextureNumber = eiRnd(2);
		}
	}

	return 1;
}
Exemplo n.º 6
0
// Runden Schatten malen
void RenderRoundShadow(LPDIRECT3DDEVICE7 lpDevice,float x,float y,float z,float r)
{
#define EDGES 12
	static D3DVERTEX v[(EDGES+1)*2];

	D3DLIGHT7 light;
	lpDevice->GetLight(0,&light);
	D3DVECTOR length=Normalize(light.dvDirection)*(-100.0f);

	for (int i=0;i<=EDGES;i++)
	{
		v[i]=v[i+EDGES+1]=D3DVERTEX(D3DVECTOR(x+sinf(float(i)/float(EDGES)*g_PI*2.0f)*r,y,z+cosf(float(i)/float(EDGES)*g_PI*2.0f)*r),D3DVECTOR(0,1,0),0,0);
		v[i+EDGES+1].x-=length.x;
		v[i+EDGES+1].y-=length.y;
		v[i+EDGES+1].z-=length.z;
	}

	static WORD wIndices[(EDGES-2)*3+EDGES*6];
	const PWORD Cap=&wIndices[0];
	const PWORD Side=&wIndices[(EDGES-2)*3];

	for (i=0;i<EDGES-2;i++)
	{
		Cap[i*3]=0;
		Cap[i*3+1]=i+1;
		Cap[i*3+2]=i+2;
	}
	for (i=0;i<EDGES;i++)
	{
		Side[i*6+0]=i;
		Side[i*6+1]=i+EDGES+2;
		Side[i*6+2]=i+1;
		Side[i*6+3]=i;
		Side[i*6+4]=i+EDGES+1;
		Side[i*6+5]=i+EDGES+2;
	}

	RenderShadow(lpDevice,v,EDGES*2+2,wIndices,sizeof(wIndices)/sizeof(wIndices[0]));
//	RenderShadow(lpDevice,v,8,wIndices,(EDGES-2)*3);
}
Exemplo n.º 7
0
void CGras::CreateGras(int index,int anzahl)
{
//#define GRAS_KI

	const float sizex=1.5f/2.0f;
	const D3DVECTOR height=D3DVECTOR(0,0.475f,0);

	vertexnum[index]=anzahl*4;

	lpVertices[index]=CreateVertexBuffer(game->lpD3D,&game->d3ddesc,D3DFVF_VERTEX,anzahl*4,TRUE);
	
    D3DVERTEX* v;
    lpVertices[index]->Lock( DDLOCK_WAIT, (VOID**)&v,NULL);
    {
		D3DVECTOR pos,width,n;
		int y;
		float faktor;
		const int maxloops=25;
		WORD i;

#ifdef GRAS_KI
		D3DVECTOR *points;
		const int NumPoints=int(world->GetWidth()*world->GetHeight()/10.0f);
		if (NumPoints>0)
		{
			points=new D3DVECTOR[NumPoints];
			for (i=0;i<NumPoints;i++)
				points[i]=world->Rand(0.2f);
		}
#endif

		for (i=0;i<anzahl;i++)
		{
			float alpha=randf()*g_PI*2.0f;
			y=0;
			do
			{
				y++;
				pos=world->Rand(0.2f);

				faktor=1.0f;
#ifdef GRAS_KI
				if (NumPoints>0)
				{
					faktor=0.0f;
					for (int warscht=0;warscht<NumPoints;warscht++)
						faktor+=powf(sqr(pos.x-points[warscht].x)+sqr(pos.z-points[warscht].z)+1,0.5f);
					faktor=1.0f/(faktor/NumPoints);
				}
#endif

				if (pos.y<0.15f)
					faktor*=0.15f;
				if (y>maxloops)faktor+=0.2f;
			}while (randf()>faktor);

			width=D3DVECTOR(cosf(alpha),0,sinf(alpha));
			n=D3DVECTOR(width.z,0,width.x);
			width*=sizex*(0.5f+randf()*1.0f);
			const float hf=0.5f+randf()*1.35f;

			v[i*4+0]=D3DVERTEX(pos+width+height*hf,n,1,0);
			v[i*4+1]=D3DVERTEX(pos-width+height*hf,n,0,0);
			v[i*4+2]=D3DVERTEX(pos-width,n,0,1);
			v[i*4+3]=D3DVERTEX(pos+width,n,1,1);
		}
#ifdef GRAS_KI
		if (NumPoints>0)delete[] points;
#endif
    }
    lpVertices[index]->Unlock();
	lpVertices[index]->Optimize(game->lpDevice,0);
}