⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tex.cpp

📁 VC++ DEMO, used for the beginners and the amour
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	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 + -