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); }
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 ; } } }
void CProjEdit::OnSave() { SaveProj(1); }
void CProjEdit::OnSaveas() { SaveProj(0); }