Exemplo n.º 1
0
VOID KG3DBaseCoordImp::RenderIntersectMesh(RepresentData& RpData, const D3DXMATRIX& matView, const D3DXMATRIX& matProj)
{
	//检查其它Drawer是否正确
#if 0
	g_CheckFrameDrawers(RpData.vecPos, GetSelectorRingRadius(RpData));
#endif

	GraphicsStruct::RenderState rs1(D3DRS_AMBIENT, 0xffffffff);
	GraphicsStruct::RenderState rs2(D3DRS_ZENABLE, D3DZB_FALSE);

	GraphicsStruct::RenderState rs3(D3DRS_ALPHABLENDENABLE, TRUE);
	GraphicsStruct::RenderState rs4(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
	GraphicsStruct::RenderState rs5(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

	GraphicsStruct::RenderState rs6(D3DRS_CULLMODE, D3DCULL_NONE);
	GraphicsStruct::RenderState rs7(D3DRS_SPECULARENABLE, TRUE);
	GraphicsStruct::RenderState rs8(D3DRS_FILLMODE, D3DFILL_SOLID);
	GraphicsStruct::RenderState rs9(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);


	GraphicsStruct::SaveMatrix SaveWorld(D3DTS_WORLD);
	GraphicsStruct::SaveMatrix SaveView(D3DTS_VIEW);
	GraphicsStruct::SaveMatrix SaveProj(D3DTS_PROJECTION);

	g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
	g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);

	GraphicsStruct::TextureStageState	tssColorOp0(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
	GraphicsStruct::TextureStageState	tssColorOp1(1, D3DTSS_COLOROP, D3DTOP_DISABLE);
	GraphicsStruct::TextureStageState	tssColorArg0(0, D3DTSS_COLORARG1, D3DTA_TFACTOR);
	GraphicsStruct::TextureStageState	tssAlphaOp0(0,D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
	GraphicsStruct::TextureStageState	tssAlphaArg1(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR);
	g_pd3dDevice->SetRenderState(D3DRS_TEXTUREFACTOR, 0xffffffff);

	D3DXMATRIX matUse;
	{
		D3DXMATRIX vMatScaling;
		FLOAT fScale = GetSelectorRingRadius(RpData) / em_mesh_range;
		D3DXMatrixScaling(&vMatScaling, fScale, fScale, fScale);
		D3DXMATRIX vMatTrans;
		D3DXMatrixTranslation(&vMatTrans, RpData.vecPos.x, RpData.vecPos.y, RpData.vecPos.z);
		matUse = vMatScaling * vMatTrans;
	}
	g_pd3dDevice->SetTransform(D3DTS_WORLD, &matUse);

	_ASSERTE(_countof(RpData.MeshForAxis) == _countof(RpData.MeshForPlane));
	for (size_t i = 0; i < _countof(RpData.MeshForAxis); ++i)
	{
		if(NULL != RpData.MeshForAxis[i])
			RpData.MeshForAxis[i]->DrawSubset(0);

		if(NULL != RpData.MeshForPlane[i])
			RpData.MeshForPlane[i]->DrawSubset(0);
	}
	if(NULL != RpData.MeshForIntegration)
		RpData.MeshForIntegration->DrawSubset(0);
}
Exemplo n.º 2
0
Arquivo: set.c Projeto: justid/Zoolu
int ProjSet()
{
	unsigned int key = 0 ;
	unsigned int back_key = 0 ;
	BYTE row = 0 ;
	BYTE exit_flag = FALSE ;

	Bdisp_AllClr_DDVRAM() ; 	/* clear screen */
	Print_zh(" 设置 ", 2, 0, VERT_REV) ;
	PrintMini(2, 58, (unsigned char*)" F1 ", MINI_REV) ; 
	PrintMini(21, 58, (unsigned char*)" F2 ", MINI_REV) ; 
	//PrintMini(40, 58, (unsigned char*)" F3 ", MINI_REV) ; 
	PrintMini(105, 58, (unsigned char*)" EXIT ", MINI_REV) ; 

	while (exit_flag != TRUE) {	
		switch (key) {
		case KEY_CTRL_F1: default: 
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			locatestr(27,2) ;printf("放样:增减桩距 ") ;
			locatestr(67,16) ;printf("%.3f", allset.stake_d) ;	
			locatestr(27,29) ;printf("反算:最大路宽 ") ;
			locatestr(67,43) ;printf("%.3f", allset.width_max) ;
			PrintXY(120, 6, (unsigned char*)"\xE6\x9C ", 0) ;
			PrintXY(120, 49, (unsigned char*)"\xE6\x9D ", 0) ;
			if (row > 1) { 	/* 判断是否进入下一个菜单 */
				key = KEY_CTRL_F2 ; 
				row = 0 ; 
				break ;
			 }
			
			key = InputVal(53, 17+row*27) ;
			switch (row) {
			case 0: allset.stake_d = number ? number : allset.stake_d ;break ;
			case 1: allset.width_max = number ? number : allset.width_max ;break ;
			default:  break ;
			}
			break ;
		case KEY_CTRL_F2:
			back_key = key ;
			Bdisp_AreaClr_DDVRAM(&clear_area) ;
			locatestr(27,2) ;printf("1=交点 2=线元 ") ;
			locatestr(77,16) ;printf("%.3f", allset.xl_type) ;	
			locatestr(27,29) ;printf("1=正交 2=任意 ") ;
			locatestr(77,43) ;printf("%.3f", allset.pj_mode) ;
			PrintXY(120, 6, (unsigned char*)"\xE6\x9C ", 0) ;
			PrintXY(120, 46, (unsigned char*)"\xE6\x9D ", 0) ;
			if (row > 1) { 	/* 判断是否进入下一个菜单 */
				if ( SaveProj()  != -1 )	Warning("设置成功 ", 2) ; 
				else  Warning("设置失败 ", 2) ;
				exit_flag = TRUE ;
				break;
			 }
			key = InputVal(53, 17+row*27) ;
			switch (row) {
			case 0:   allset.xl_type = (number==1 || number==2) ? number : allset.xl_type ;break ;
			case 1:   allset.pj_mode = (number==1 || number==2) ? number : allset.pj_mode ;break ;
			default:  break ;
			}
			break ;
		case KEY_CTRL_UP:  
			if (row > 0)  --row ;  
			key = back_key ;
			break ;
		case KEY_CTRL_DOWN: 
		case KEY_CTRL_EXE:
			++row ; 
			key = back_key ;
			break ;
		case KEY_CTRL_DEL:
			key = back_key ;
			break ;
		case KEY_CTRL_EXIT :
			exit_flag = TRUE ;
			break ;
		}
	}
}
Exemplo n.º 3
0
void CProjEdit::OnSave() 
{
  SaveProj(1);
}
Exemplo n.º 4
0
void CProjEdit::OnSaveas() 
{
  SaveProj(0);
}