📄 tex.cpp
字号:
g_hWndTex1AlphaOp = GetDlgItem( hWnd,IDC_TEX1_ALPHA_OP);
g_hWndTex2AlphaOp = GetDlgItem( hWnd,IDC_TEX2_ALPHA_OP);
g_hWndTex0AlphaArg2 = GetDlgItem( hWnd,IDC_TEX0_ALPHA_ARG2);
g_hWndTex1AlphaArg2 = GetDlgItem( hWnd,IDC_TEX1_ALPHA_ARG2);
g_hWndTex2AlphaArg2 = GetDlgItem( hWnd,IDC_TEX2_ALPHA_ARG2);
g_hWndTex0ColorArg1 = GetDlgItem( hWnd,IDC_TEX0_COLOR_ARG1);
g_hWndTex1ColorArg1 = GetDlgItem( hWnd,IDC_TEX1_COLOR_ARG1);
g_hWndTex2ColorArg1 = GetDlgItem( hWnd,IDC_TEX2_COLOR_ARG1);
g_hWndTex0ColorOp = GetDlgItem( hWnd,IDC_TEX0_COLOR_OP);
g_hWndTex1ColorOp = GetDlgItem( hWnd,IDC_TEX1_COLOR_OP);
g_hWndTex2ColorOp = GetDlgItem( hWnd,IDC_TEX2_COLOR_OP);
g_hWndTex0ColorArg2 = GetDlgItem( hWnd,IDC_TEX0_COLOR_ARG2);
g_hWndTex1ColorArg2 = GetDlgItem( hWnd,IDC_TEX1_COLOR_ARG2);
g_hWndTex2ColorArg2 = GetDlgItem( hWnd,IDC_TEX2_COLOR_ARG2);
g_hWndTex0Name = GetDlgItem( hWnd,IDC_TEX0_NAME );
g_hWndTex1Name = GetDlgItem( hWnd,IDC_TEX1_NAME );
g_hWndTex2Name = GetDlgItem( hWnd,IDC_TEX2_NAME );
g_hWndTex0AddrModeU = GetDlgItem( hWnd,IDC_TEX0_ADDR_MODE_U);
g_hWndTex1AddrModeU = GetDlgItem( hWnd,IDC_TEX1_ADDR_MODE_U);
g_hWndTex2AddrModeU = GetDlgItem( hWnd,IDC_TEX2_ADDR_MODE_U);
g_hWndTex0AddrModeV = GetDlgItem( hWnd,IDC_TEX0_ADDR_MODE_V);
g_hWndTex1AddrModeV = GetDlgItem( hWnd,IDC_TEX1_ADDR_MODE_V);
g_hWndTex2AddrModeV = GetDlgItem( hWnd,IDC_TEX2_ADDR_MODE_V);
g_hWndTexAddrMaxU = GetDlgItem( hWnd,IDC_ADDR_U);
g_hWndTexAddrMaxV = GetDlgItem( hWnd,IDC_ADDR_V);
g_hWndTexBlendFactor = GetDlgItem( hWnd,IDC_TEX_BLEND_FACTOR);
UpdateUIForDeviceCapabilites();
//设置控件的初始状态
Edit_SetText(g_hWndTexBlendFactor,_T("0XFFFFFFFF"));
Edit_LimitText(g_hWndTexBlendFactor,10);
Edit_SetText(g_hWndTex0Name,_T("") );
Edit_SetText(g_hWndTex1Name,_T("") );
Edit_SetText(g_hWndTex2Name,_T("") );
Edit_LimitText(g_hWndTexAddrMaxU, 2);
Edit_LimitText(g_hWndTexAddrMaxV, 2);
Edit_SetText(g_hWndTexAddrMaxU,_T("1"));
Edit_SetText(g_hWndTexAddrMaxV,_T("1"));
for( TCHAR** pstrTexOps = g_astrTextureOps; *pstrTexOps; pstrTexOps++ )
{
ComboBox_AddString(g_hWndTex0ColorOp,*pstrTexOps );
ComboBox_AddString(g_hWndTex0AlphaOp,*pstrTexOps );
ComboBox_AddString(g_hWndTex1ColorOp,*pstrTexOps );
ComboBox_AddString(g_hWndTex1AlphaOp,*pstrTexOps );
ComboBox_AddString(g_hWndTex2ColorOp,*pstrTexOps );
ComboBox_AddString(g_hWndTex2AlphaOp,*pstrTexOps );
}
for( TCHAR** pstrArgs1 = g_astrTextureArgs1; *pstrArgs1; pstrArgs1++ )
{
ComboBox_AddString(g_hWndTex0ColorArg1,*pstrArgs1 );
ComboBox_AddString(g_hWndTex0AlphaArg1,*pstrArgs1 );
ComboBox_AddString(g_hWndTex1ColorArg1,*pstrArgs1 );
ComboBox_AddString(g_hWndTex1AlphaArg1,*pstrArgs1 );
ComboBox_AddString(g_hWndTex2ColorArg1,*pstrArgs1 );
ComboBox_AddString(g_hWndTex2AlphaArg1,*pstrArgs1 );
}
for( TCHAR** pstrArgs2 = g_astrTextureArgs2; *pstrArgs2; pstrArgs2++ )
{
ComboBox_AddString(g_hWndTex0ColorArg2,*pstrArgs2 );
ComboBox_AddString(g_hWndTex0AlphaArg2,*pstrArgs2 );
ComboBox_AddString(g_hWndTex1ColorArg2,*pstrArgs2 );
ComboBox_AddString(g_hWndTex1AlphaArg2,*pstrArgs2 );
ComboBox_AddString(g_hWndTex2ColorArg2,*pstrArgs2 );
ComboBox_AddString(g_hWndTex2AlphaArg2,*pstrArgs2 );
}
for( TCHAR** pstrAddrs = g_astrTextureAddr; *pstrAddrs; pstrAddrs++ )
{
ComboBox_AddString(g_hWndTex0AddrModeU,*pstrAddrs);
ComboBox_AddString(g_hWndTex1AddrModeU,*pstrAddrs);
ComboBox_AddString(g_hWndTex2AddrModeU,*pstrAddrs);
ComboBox_AddString(g_hWndTex0AddrModeV,*pstrAddrs);
ComboBox_AddString(g_hWndTex1AddrModeV,*pstrAddrs);
ComboBox_AddString(g_hWndTex2AddrModeV,*pstrAddrs);
}
ComboBox_SetCurSel(g_hWndTex0AddrModeV,0);
ComboBox_SetCurSel(g_hWndTex1AddrModeV,0);
ComboBox_SetCurSel(g_hWndTex2AddrModeV,0);
ComboBox_SetCurSel(g_hWndTex0AddrModeU,0);
ComboBox_SetCurSel(g_hWndTex1AddrModeU,0);
ComboBox_SetCurSel(g_hWndTex2AddrModeU,0);
//
UpdateStageColor( 0, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageAlpha( 0, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageColor( 1, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageAlpha( 1, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageColor( 2, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageAlpha( 2, toDISABLE, ta1TEXTURE, ta2CURRENT );
UpdateStageColor( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
Main_OnChangeStageArgs();
strcpy( g_strInitialDir,_T(""));
}
//-----------------------------------------------------------------------------
// Name: UdateUIForDeviceCapabilites()
// Desc: 根据设备能力使用舞台相关的控件.
//-----------------------------------------------------------------------------
void UpdateUIForDeviceCapabilites()
{
ComboBox_Enable(g_hWndTex1ColorOp,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex1AlphaOp,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex1ColorArg1,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex1ColorArg2,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex1AlphaArg1,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex1AlphaArg2,g_dwMaxTextureBlendStages>1 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2ColorOp,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2AlphaOp,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2ColorArg1,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2ColorArg2,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2AlphaArg1,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
ComboBox_Enable(g_hWndTex2AlphaArg2,g_dwMaxTextureBlendStages>2 ? TRUE : FALSE);
}
//-----------------------------------------------------------------------------
// Name: Main_OnChangeStageArgs()
// Desc: 更新舞台相关的参数.
//-----------------------------------------------------------------------------
void Main_OnChangeStageArgs()
{
g_wT0COp = aTexOps[ ComboBox_GetCurSel(g_hWndTex0ColorOp) + 1 ];
g_wT0AOp = aTexOps[ ComboBox_GetCurSel(g_hWndTex0AlphaOp) + 1 ];
g_wT1COp = aTexOps[ ComboBox_GetCurSel(g_hWndTex1ColorOp) + 1 ];
g_wT1AOp = aTexOps[ ComboBox_GetCurSel(g_hWndTex1AlphaOp) + 1 ];
g_wT2COp = aTexOps[ ComboBox_GetCurSel(g_hWndTex2ColorOp) + 1 ];
g_wT2AOp = aTexOps[ ComboBox_GetCurSel(g_hWndTex2AlphaOp) + 1 ];
if( 0 == g_wT0COp ) g_wT0COp = D3DTOP_DISABLE;
if( 0 == g_wT0AOp ) g_wT0AOp = D3DTOP_DISABLE;
if( 0 == g_wT1COp ) g_wT1COp = D3DTOP_DISABLE;
if( 0 == g_wT1AOp ) g_wT1AOp = D3DTOP_DISABLE;
if( 0 == g_wT2COp ) g_wT2COp = D3DTOP_DISABLE;
if( 0 == g_wT2AOp ) g_wT2AOp = D3DTOP_DISABLE;
g_wT0CArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex0ColorArg1) + 1 ];
g_wT0CArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex0ColorArg2) + 1 ];
g_wT0AArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex0AlphaArg1) + 1 ];
g_wT0AArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex0AlphaArg2) + 1 ];
g_wT1CArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex1ColorArg1) + 1 ];
g_wT1CArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex1ColorArg2) + 1 ];
g_wT1AArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex1AlphaArg1) + 1 ];
g_wT1AArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex1AlphaArg2) + 1 ];
g_wT2CArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex2ColorArg1) + 1 ];
g_wT2CArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex2ColorArg2) + 1 ];
g_wT2AArg1 = aTexArgs1[ ComboBox_GetCurSel(g_hWndTex2AlphaArg1) + 1 ];
g_wT2AArg2 = aTexArgs2[ ComboBox_GetCurSel(g_hWndTex2AlphaArg2) + 1 ];
}
//-----------------------------------------------------------------------------
// Name: Main_OnChangeAddrMax()
// Desc: 更新纹理地址.
//-----------------------------------------------------------------------------
void Main_OnChangeAddrMax()
{
TCHAR strNum[3];
Edit_GetText(g_hWndTexAddrMaxU,strNum,3);
g_wMaxAddressU = ::strtod(strNum,NULL);
Edit_GetText(g_hWndTexAddrMaxV,strNum,3);
g_wMaxAddressV = ::strtod(strNum,NULL);
FACEVERTEX* pVertices;
g_pVB->Lock( 0, 0, (BYTE**)&pVertices, 0 );
FILL_FACEVERTEX( pVertices[ 0], -5.0f,-5.0f, 0.0f, g_dwDiffuseColor, 0.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV,
0.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV,
0.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV );
FILL_FACEVERTEX( pVertices[ 1], -5.0f, 5.0f, 0.0f, g_dwDiffuseColor, 0.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV,
0.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV,
0.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV );
FILL_FACEVERTEX( pVertices[ 2], 5.0f,-5.0f, 0.0f, g_dwDiffuseColor, 1.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV,
1.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV,
1.0f*(float)g_wMaxAddressU, 1.0f*(float)g_wMaxAddressV );
FILL_FACEVERTEX( pVertices[ 3], 5.0f, 5.0f, 0.0f, g_dwDiffuseColor, 1.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV,
1.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV,
1.0f*(float)g_wMaxAddressU, 0.0f*(float)g_wMaxAddressV );
g_pVB->Unlock();
}
//-----------------------------------------------------------------------------
// Name: UpdateStageColor()
// Desc: 更新舞台颜色相关的控件.
//-----------------------------------------------------------------------------
void UpdateStageColor( WORD stage, LONG op, LONG arg1, LONG arg2 )
{
switch(stage)
{
case 0:
ComboBox_SetCurSel(g_hWndTex0ColorOp,op);
ComboBox_SetCurSel(g_hWndTex0ColorArg1,arg1);
ComboBox_SetCurSel(g_hWndTex0ColorArg2,arg2);
break;
case 1:
ComboBox_SetCurSel(g_hWndTex1ColorOp,op);
ComboBox_SetCurSel(g_hWndTex1ColorArg1,arg1);
ComboBox_SetCurSel(g_hWndTex1ColorArg2,arg2);
break;
case 2:
ComboBox_SetCurSel(g_hWndTex2ColorOp,op);
ComboBox_SetCurSel(g_hWndTex2ColorArg1,arg1);
ComboBox_SetCurSel(g_hWndTex2ColorArg2,arg2);
break;
default:break;
}
}
//-----------------------------------------------------------------------------
// Name: UpdateStageAlpha()
// Desc: 更新舞台融合相关的控件.
//-----------------------------------------------------------------------------
void UpdateStageAlpha( WORD stage, LONG op, LONG arg1, LONG arg2 )
{
switch(stage)
{
case 0:
ComboBox_SetCurSel(g_hWndTex0AlphaOp,op);
ComboBox_SetCurSel(g_hWndTex0AlphaArg1,arg1);
ComboBox_SetCurSel(g_hWndTex0AlphaArg2,arg2);
break;
case 1:
ComboBox_SetCurSel(g_hWndTex1AlphaOp,op);
ComboBox_SetCurSel(g_hWndTex1AlphaArg1,arg1);
ComboBox_SetCurSel(g_hWndTex1AlphaArg2,arg2);
break;
case 2:
ComboBox_SetCurSel(g_hWndTex2AlphaOp,op);
ComboBox_SetCurSel(g_hWndTex2AlphaArg1,arg1);
ComboBox_SetCurSel(g_hWndTex2AlphaArg2,arg2);
break;
default:break;
}
}
//-----------------------------------------------------------------------------
// Name: SetTextureStageStatesForRendering()
// Desc: .......
//-----------------------------------------------------------------------------
HRESULT SetTextureStageStatesForRendering( LPDIRECT3DDEVICE8 pd3dDevice )
{
if( g_bTex0Changed == true )
{
SAFE_RELEASE( g_pTextureArg0 );
if( FAILED( CreateTexture( pd3dDevice, g_strTexture0, &g_pTextureArg0 ) ) )
g_pTextureArg0 = NULL;
g_bTex0Changed = false;
}
if( g_bTex1Changed == true )
{
SAFE_RELEASE( g_pTextureArg1 );
if( FAILED( CreateTexture( pd3dDevice, g_strTexture1, &g_pTextureArg1 ) ) )
g_pTextureArg1 = NULL;
g_bTex1Changed = false;
}
if( g_bTex2Changed == true )
{
SAFE_RELEASE( g_pTextureArg2 );
if( FAILED( CreateTexture( pd3dDevice, g_strTexture2, &g_pTextureArg2 ) ) )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -