Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
BIN
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/directx.ico
Normal file
BIN
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/directx.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
638
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfcform.cpp
Normal file
638
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfcform.cpp
Normal file
@@ -0,0 +1,638 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: MFCForm.cpp
|
||||
//
|
||||
// Desc: File for the dialog form for the MFC multi-texture demo.
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include <stdio.h>
|
||||
#include <D3DX8.h>
|
||||
#include "D3DApp.h"
|
||||
#include "D3DFont.h"
|
||||
#include "D3DUtil.h"
|
||||
#include "DXUtil.h"
|
||||
#include "MFCTex.h"
|
||||
#include "TexArgs.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global data and objects
|
||||
//-----------------------------------------------------------------------------
|
||||
extern CApp g_App;
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// External storage of the texture stage states
|
||||
//-----------------------------------------------------------------------------
|
||||
extern WORD g_wT0COp, g_wT1COp, g_wT2COp;
|
||||
extern WORD g_wT0CArg1, g_wT1CArg1, g_wT2CArg1;
|
||||
extern WORD g_wT0CArg2, g_wT1CArg2, g_wT2CArg2;
|
||||
extern WORD g_wT0AOp, g_wT1AOp, g_wT2AOp;
|
||||
extern WORD g_wT0AArg1, g_wT1AArg1, g_wT2AArg1;
|
||||
extern WORD g_wT0AArg2, g_wT1AArg2, g_wT2AArg2;
|
||||
extern DWORD g_dwTextureFactor;
|
||||
extern DWORD g_dwDiffuseColor;
|
||||
extern DWORD g_dwMaxTextureBlendStages ;
|
||||
|
||||
|
||||
VOID CAppForm::InitializeUIControls()
|
||||
{
|
||||
|
||||
// Get ptrs to the combo box controls for texture stage state UI
|
||||
m_pTex0ColorArg1 = (CComboBox*)GetDlgItem( IDC_TEX0_COLORARG1 );
|
||||
m_pTex0ColorOp = (CComboBox*)GetDlgItem( IDC_TEX0_COLOROP );
|
||||
m_pTex0ColorArg2 = (CComboBox*)GetDlgItem( IDC_TEX0_COLORARG2 );
|
||||
m_pTex0AlphaArg1 = (CComboBox*)GetDlgItem( IDC_TEX0_ALPHAARG1 );
|
||||
m_pTex0AlphaOp = (CComboBox*)GetDlgItem( IDC_TEX0_ALPHAOP );
|
||||
m_pTex0AlphaArg2 = (CComboBox*)GetDlgItem( IDC_TEX0_ALPHAARG2 );
|
||||
m_pTex1ColorArg1 = (CComboBox*)GetDlgItem( IDC_TEX1_COLORARG1 );
|
||||
m_pTex1ColorOp = (CComboBox*)GetDlgItem( IDC_TEX1_COLOROP );
|
||||
m_pTex1ColorArg2 = (CComboBox*)GetDlgItem( IDC_TEX1_COLORARG2 );
|
||||
m_pTex1AlphaArg1 = (CComboBox*)GetDlgItem( IDC_TEX1_ALPHAARG1 );
|
||||
m_pTex1AlphaOp = (CComboBox*)GetDlgItem( IDC_TEX1_ALPHAOP );
|
||||
m_pTex1AlphaArg2 = (CComboBox*)GetDlgItem( IDC_TEX1_ALPHAARG2 );
|
||||
m_pTex2ColorArg1 = (CComboBox*)GetDlgItem( IDC_TEX2_COLORARG1 );
|
||||
m_pTex2ColorOp = (CComboBox*)GetDlgItem( IDC_TEX2_COLOROP );
|
||||
m_pTex2ColorArg2 = (CComboBox*)GetDlgItem( IDC_TEX2_COLORARG2 );
|
||||
m_pTex2AlphaArg1 = (CComboBox*)GetDlgItem( IDC_TEX2_ALPHAARG1 );
|
||||
m_pTex2AlphaOp = (CComboBox*)GetDlgItem( IDC_TEX2_ALPHAOP );
|
||||
m_pTex2AlphaArg2 = (CComboBox*)GetDlgItem( IDC_TEX2_ALPHAARG2 );
|
||||
|
||||
GetDlgItem( IDC_TEX0_NAME )->SetWindowText( _T("env2.bmp") );
|
||||
GetDlgItem( IDC_TEX1_NAME )->SetWindowText( _T("spotlite.bmp") );
|
||||
GetDlgItem( IDC_TEX2_NAME )->SetWindowText( _T("env3.bmp") );
|
||||
OnChangeTex();
|
||||
|
||||
GetDlgItem( IDC_BLEND_FACTOR )->SetWindowText( _T("80808080") );
|
||||
OnChangeBlendFactor();
|
||||
|
||||
GetDlgItem( IDC_DIFFUSE_COLOR )->SetWindowText( _T("ff0000ff") );
|
||||
OnChangeDiffuseColor();
|
||||
|
||||
for( TCHAR** pstrTexOps = g_astrTextureOps; *pstrTexOps; pstrTexOps++ )
|
||||
{
|
||||
m_pTex0ColorOp->AddString( *pstrTexOps );
|
||||
m_pTex0AlphaOp->AddString( *pstrTexOps );
|
||||
m_pTex1ColorOp->AddString( *pstrTexOps );
|
||||
m_pTex1AlphaOp->AddString( *pstrTexOps );
|
||||
m_pTex2ColorOp->AddString( *pstrTexOps );
|
||||
m_pTex2AlphaOp->AddString( *pstrTexOps );
|
||||
}
|
||||
|
||||
for( TCHAR** pstrArgs1 = g_astrTextureArgs1; *pstrArgs1; pstrArgs1++ )
|
||||
{
|
||||
m_pTex0ColorArg1->AddString( *pstrArgs1 );
|
||||
m_pTex0AlphaArg1->AddString( *pstrArgs1 );
|
||||
m_pTex1ColorArg1->AddString( *pstrArgs1 );
|
||||
m_pTex1AlphaArg1->AddString( *pstrArgs1 );
|
||||
m_pTex2ColorArg1->AddString( *pstrArgs1 );
|
||||
m_pTex2AlphaArg1->AddString( *pstrArgs1 );
|
||||
}
|
||||
|
||||
for( TCHAR** pstrArgs2 = g_astrTextureArgs2; *pstrArgs2; pstrArgs2++ )
|
||||
{
|
||||
m_pTex0ColorArg2->AddString( *pstrArgs2 );
|
||||
m_pTex0AlphaArg2->AddString( *pstrArgs2 );
|
||||
m_pTex1ColorArg2->AddString( *pstrArgs2 );
|
||||
m_pTex1AlphaArg2->AddString( *pstrArgs2 );
|
||||
m_pTex2ColorArg2->AddString( *pstrArgs2 );
|
||||
m_pTex2AlphaArg2->AddString( *pstrArgs2 );
|
||||
}
|
||||
|
||||
for( TCHAR** pstrPresets = g_astrPresetEffects; *pstrPresets; pstrPresets++ )
|
||||
{
|
||||
((CComboBox*)GetDlgItem( IDC_PRESET_EFFECTS ))->AddString( *pstrPresets );
|
||||
}
|
||||
OnChangePresetEffects();
|
||||
|
||||
// Store the initial media directory (for loading textures)
|
||||
strcpy( m_strInitialDir, DXUtil_GetDXSDKMediaPath() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: UpdateUIForDeviceCapabilites()
|
||||
// Desc: Whenever we get a new device, call this function to enable/disable the
|
||||
// appropiate UI controls to match the device's capabilities.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::UpdateUIForDeviceCapabilites()
|
||||
{
|
||||
g_dwMaxTextureBlendStages = (DWORD)m_d3dCaps.MaxTextureBlendStages;
|
||||
|
||||
m_pTex1ColorOp->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
m_pTex1AlphaOp->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
m_pTex1ColorArg1->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
m_pTex1ColorArg2->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
m_pTex1AlphaArg1->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
m_pTex1AlphaArg2->EnableWindow( g_dwMaxTextureBlendStages>1 ? TRUE : FALSE );
|
||||
|
||||
m_pTex2ColorOp->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
m_pTex2AlphaOp->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
m_pTex2ColorArg1->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
m_pTex2ColorArg2->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
m_pTex2AlphaArg1->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
m_pTex2AlphaArg2->EnableWindow( g_dwMaxTextureBlendStages>2 ? TRUE : FALSE );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChangeTex()
|
||||
// Desc: When the user hits a texture change button
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnChangeTex()
|
||||
{
|
||||
CString strName0, strName1, strName2;
|
||||
|
||||
((CEdit*)GetDlgItem( IDC_TEX0_NAME ))->GetWindowText( strName0 );
|
||||
((CEdit*)GetDlgItem( IDC_TEX1_NAME ))->GetWindowText( strName1 );
|
||||
((CEdit*)GetDlgItem( IDC_TEX2_NAME ))->GetWindowText( strName2 );
|
||||
|
||||
SetTextureMaps( (LPCTSTR)strName0, (LPCTSTR)strName1, (LPCTSTR)strName2 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnSelectTexture0Name()
|
||||
// Desc: When the user hits a texture change button
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnSelectTexture0Name()
|
||||
{
|
||||
TCHAR strTextureName[MAX_PATH] = _T("");
|
||||
|
||||
// Display the OpenFileName dialog. Then, try to load the specified file
|
||||
OPENFILENAME ofn = { sizeof(OPENFILENAME), NULL, NULL,
|
||||
_T("Texture Files (.bmp;.tga)\0*.bmp;*.tga\0\0"),
|
||||
NULL, 0, 1, strTextureName, MAX_PATH, m_strFileName, MAX_PATH,
|
||||
m_strInitialDir, _T("Open Texture File"),
|
||||
OFN_FILEMUSTEXIST, 0, 1, NULL, 0, NULL, NULL };
|
||||
|
||||
if( TRUE == GetOpenFileName( &ofn ) )
|
||||
{
|
||||
GetDlgItem(IDC_TEX0_NAME)->SetWindowText( m_strFileName );
|
||||
OnChangeTex();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnSelectTexture1Name()
|
||||
// Desc: When the user hits a texture change button
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnSelectTexture1Name()
|
||||
{
|
||||
TCHAR strTextureName[MAX_PATH] = _T("");
|
||||
|
||||
// Display the OpenFileName dialog. Then, try to load the specified file
|
||||
OPENFILENAME ofn = { sizeof(OPENFILENAME), NULL, NULL,
|
||||
_T("Texture Files (.bmp;.tga)\0*.bmp;*.tga\0\0"),
|
||||
NULL, 0, 1, strTextureName, MAX_PATH, m_strFileName, MAX_PATH,
|
||||
m_strInitialDir, _T("Open Texture File"),
|
||||
OFN_FILEMUSTEXIST, 0, 1, NULL, 0, NULL, NULL };
|
||||
|
||||
if( TRUE == GetOpenFileName( &ofn ) )
|
||||
{
|
||||
GetDlgItem(IDC_TEX1_NAME)->SetWindowText( m_strFileName );
|
||||
OnChangeTex();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnSelectTexture2Name()
|
||||
// Desc: When the user hits a texture change button
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnSelectTexture2Name()
|
||||
{
|
||||
TCHAR strTextureName[MAX_PATH] = _T("");
|
||||
|
||||
// Display the OpenFileName dialog. Then, try to load the specified file
|
||||
OPENFILENAME ofn = { sizeof(OPENFILENAME), NULL, NULL,
|
||||
_T("Texture Files (.bmp;.tga)\0*.bmp;*.tga\0\0"),
|
||||
NULL, 0, 1, strTextureName, MAX_PATH, m_strFileName, MAX_PATH,
|
||||
m_strInitialDir, _T("Open Texture File"),
|
||||
OFN_FILEMUSTEXIST, 0, 1, NULL, 0, NULL, NULL };
|
||||
|
||||
if( TRUE == GetOpenFileName( &ofn ) )
|
||||
{
|
||||
GetDlgItem(IDC_TEX2_NAME)->SetWindowText( m_strFileName );
|
||||
OnChangeTex();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: UpdateStageColor()
|
||||
// Desc: Updates a stage's ColorOp parameters in the form's UI.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::UpdateStageColor( WORD stage, LONG op, LONG arg1, LONG arg2 )
|
||||
{
|
||||
WORD wListID = IDC_TEX0_COLOROP;
|
||||
|
||||
if( stage == 1 )
|
||||
wListID = IDC_TEX1_COLOROP;
|
||||
if( stage == 2 )
|
||||
wListID = IDC_TEX2_COLOROP;
|
||||
|
||||
((CComboBox*)GetDlgItem( wListID+0 ))->SetCurSel( op );
|
||||
((CComboBox*)GetDlgItem( wListID+1 ))->SetCurSel( arg1 );
|
||||
((CComboBox*)GetDlgItem( wListID+2 ))->SetCurSel( arg2 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: UpdateStageAlpha()
|
||||
// Desc: Updates a stage's AlphaOp parameters in the form's UI.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::UpdateStageAlpha( WORD stage, LONG op, LONG arg1, LONG arg2 )
|
||||
{
|
||||
WORD wListID = IDC_TEX0_ALPHAOP;
|
||||
|
||||
if( stage == 1 )
|
||||
wListID = IDC_TEX1_ALPHAOP;
|
||||
if( stage == 2 )
|
||||
wListID = IDC_TEX2_ALPHAOP;
|
||||
|
||||
((CComboBox*)GetDlgItem( wListID+0 ))->SetCurSel( op );
|
||||
((CComboBox*)GetDlgItem( wListID+1 ))->SetCurSel( arg1 );
|
||||
((CComboBox*)GetDlgItem( wListID+2 ))->SetCurSel( arg2 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChangePresetEffects()
|
||||
// Desc: When the user selects a preset texture stage effect
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAppForm::OnChangePresetEffects()
|
||||
{
|
||||
// Clear all the combo boxes in the UI
|
||||
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 );
|
||||
|
||||
switch( ((CComboBox*)GetDlgItem( IDC_PRESET_EFFECTS ))->GetCurSel() )
|
||||
{
|
||||
case CB_ERR: // No selection
|
||||
UpdateStageColor( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 0: // Modulate
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 1: // Modulate Alpha
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 2: // Add
|
||||
UpdateStageColor( 0, toADD, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 3: // Decal Alpha
|
||||
UpdateStageColor( 0, toBLENDTEXTURE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 4: // Colored light map
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toMODULATE, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 5: // Inverse colored light map
|
||||
UpdateStageColor( 0, toMODULATE, ta1INVTEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toMODULATE, ta1INVTEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 6: // Single channel light map
|
||||
UpdateStageColor( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toMODULATE, ta1ALPHATEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 7: // Modulate and late add
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toADD, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 8: // Linear blend using texture alpha
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toBLENDTEXTURE, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 9: // Linear blend using diffuse alpha
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toBLENDDIFFUSE, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 10: // Multitexture add w/smooth saturation
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toADD, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 11: // Multitexture subtract
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toADD, ta1INVTEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 12: // Add Diffuse to light map then modulate
|
||||
UpdateStageColor( 0, toADD, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toMODULATE, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 2, toMODULATE, ta1DIFFUSE, ta2CURRENT );
|
||||
UpdateStageAlpha( 2, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 13: // Detail modulate
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toMODULATE2X, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
case 14: // Detail add
|
||||
UpdateStageColor( 0, toMODULATE, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageAlpha( 0, toSELECTARG2, ta1TEXTURE, ta2DIFFUSE );
|
||||
UpdateStageColor( 1, toADDSIGNED, ta1TEXTURE, ta2CURRENT );
|
||||
UpdateStageAlpha( 1, toSELECTARG1, ta1TEXTURE, ta2DIFFUSE );
|
||||
break;
|
||||
}
|
||||
|
||||
OnChangeStageArgs();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChooseStageArgs()
|
||||
// Desc: When the user changes a stage arg combo box, or else when called by
|
||||
// the app, this function extracts state information from the UI, and
|
||||
// saves it in a form for the D3DDevice SetTextureStageState() calls.
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAppForm::OnChangeStageArgs()
|
||||
{
|
||||
g_wT0COp = aTexOps[ m_pTex0ColorOp->GetCurSel() + 1 ];
|
||||
g_wT0AOp = aTexOps[ m_pTex0AlphaOp->GetCurSel() + 1 ];
|
||||
g_wT1COp = aTexOps[ m_pTex1ColorOp->GetCurSel() + 1 ];
|
||||
g_wT1AOp = aTexOps[ m_pTex1AlphaOp->GetCurSel() + 1 ];
|
||||
g_wT2COp = aTexOps[ m_pTex2ColorOp->GetCurSel() + 1 ];
|
||||
g_wT2AOp = aTexOps[ m_pTex2AlphaOp->GetCurSel() + 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[ m_pTex0ColorArg1->GetCurSel() + 1 ];
|
||||
g_wT0CArg2 = aTexArgs2[ m_pTex0ColorArg2->GetCurSel() + 1 ];
|
||||
g_wT0AArg1 = aTexArgs1[ m_pTex0AlphaArg1->GetCurSel() + 1 ];
|
||||
g_wT0AArg2 = aTexArgs2[ m_pTex0AlphaArg2->GetCurSel() + 1 ];
|
||||
g_wT1CArg1 = aTexArgs1[ m_pTex1ColorArg1->GetCurSel() + 1 ];
|
||||
g_wT1CArg2 = aTexArgs2[ m_pTex1ColorArg2->GetCurSel() + 1 ];
|
||||
g_wT1AArg1 = aTexArgs1[ m_pTex1AlphaArg1->GetCurSel() + 1 ];
|
||||
g_wT1AArg2 = aTexArgs2[ m_pTex1AlphaArg2->GetCurSel() + 1 ];
|
||||
g_wT2CArg1 = aTexArgs1[ m_pTex2ColorArg1->GetCurSel() + 1 ];
|
||||
g_wT2CArg2 = aTexArgs2[ m_pTex2ColorArg2->GetCurSel() + 1 ];
|
||||
g_wT2AArg1 = aTexArgs1[ m_pTex2AlphaArg1->GetCurSel() + 1 ];
|
||||
g_wT2AArg2 = aTexArgs2[ m_pTex2AlphaArg2->GetCurSel() + 1 ];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChangeBlendFactor()
|
||||
// Desc: When the user enters a new blend factor
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnChangeBlendFactor()
|
||||
{
|
||||
CString strValue;
|
||||
(GetDlgItem( IDC_BLEND_FACTOR ))->GetWindowText( strValue );
|
||||
|
||||
const TCHAR* strFactor = (LPCTSTR)strValue;
|
||||
if( (strFactor[0] == '0') && ((strFactor[1] == 'x') || (strFactor[1] == 'X')) )
|
||||
strFactor += 2;
|
||||
|
||||
sscanf( strFactor, _T("%x"), &g_dwTextureFactor );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChangeDiffuseColor()
|
||||
// Desc: When the user wants a new diffuse color
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnChangeDiffuseColor()
|
||||
{
|
||||
CString strValue;
|
||||
(GetDlgItem( IDC_DIFFUSE_COLOR ))->GetWindowText( strValue );
|
||||
|
||||
const TCHAR* strColor = (LPCTSTR)strValue;
|
||||
if( (strColor[0] == '0') && ((strColor[1] == 'x') || (strColor[1] == 'X')) )
|
||||
strColor += 2;
|
||||
|
||||
sscanf( strColor, _T("%x"), &g_dwDiffuseColor );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class CViewCodeDlg : public CDialog
|
||||
{
|
||||
public:
|
||||
CViewCodeDlg() : CDialog(IDD_VIEWCODE) {}
|
||||
BOOL OnInitDialog();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
TCHAR* TranslateTextureOp( DWORD dwTexOp )
|
||||
{
|
||||
switch( dwTexOp )
|
||||
{
|
||||
case D3DTOP_DISABLE: return _T("DISABLE");
|
||||
case D3DTOP_SELECTARG1: return _T("SELECTARG1");
|
||||
case D3DTOP_SELECTARG2: return _T("SELECTARG2");
|
||||
case D3DTOP_MODULATE: return _T("MODULATE");
|
||||
case D3DTOP_MODULATE2X: return _T("MODULATE2X");
|
||||
case D3DTOP_MODULATE4X: return _T("MODULATE4X");
|
||||
case D3DTOP_ADD: return _T("ADD");
|
||||
case D3DTOP_ADDSIGNED: return _T("ADDSIGNED");
|
||||
case D3DTOP_ADDSIGNED2X: return _T("ADDSIGNED2X");
|
||||
case D3DTOP_SUBTRACT: return _T("SUBTRACT");
|
||||
case D3DTOP_ADDSMOOTH: return _T("ADDSMOOTH");
|
||||
case D3DTOP_BLENDDIFFUSEALPHA: return _T("BLENDDIFFUSEALPHA");
|
||||
case D3DTOP_BLENDTEXTUREALPHA: return _T("BLENDTEXTUREALPHA");
|
||||
case D3DTOP_BLENDFACTORALPHA: return _T("BLENDFACTORALPHA");
|
||||
case D3DTOP_BLENDTEXTUREALPHAPM: return _T("BLENDTEXTUREALPHAPM");
|
||||
case D3DTOP_BLENDCURRENTALPHA: return _T("BLENDCURRENTALPHA");
|
||||
case D3DTOP_PREMODULATE: return _T("PREMODULATE");
|
||||
case D3DTOP_MODULATEALPHA_ADDCOLOR: return _T("MODULATEALPHA_ADDCOLOR");
|
||||
case D3DTOP_MODULATECOLOR_ADDALPHA: return _T("MODULATECOLOR_ADDALPHA");
|
||||
case D3DTOP_MODULATEINVALPHA_ADDCOLOR: return _T("MODULATEINVALPHA_ADDCOLOR");
|
||||
case D3DTOP_MODULATEINVCOLOR_ADDALPHA: return _T("MODULATEINVCOLOR_ADDALPHA");
|
||||
case D3DTOP_BUMPENVMAP: return _T("BUMPENVMAP");
|
||||
case D3DTOP_BUMPENVMAPLUMINANCE: return _T("BUMPENVMAPLUMINANCE");
|
||||
case D3DTOP_DOTPRODUCT3: return _T("DOTPRODUCT3");
|
||||
}
|
||||
return _T("DISABLE");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
TCHAR* TranslateTextureArg( DWORD dwTexArg )
|
||||
{
|
||||
static TCHAR buffer[256];
|
||||
|
||||
switch( dwTexArg & 0x0000000f )
|
||||
{
|
||||
case D3DTA_DIFFUSE: strcpy( buffer, _T("D3DTA_DIFFUSE") );
|
||||
break;
|
||||
case D3DTA_CURRENT: strcpy( buffer, _T("D3DTA_CURRENT") );
|
||||
break;
|
||||
case D3DTA_TEXTURE: strcpy( buffer, _T("D3DTA_TEXTURE") );
|
||||
break;
|
||||
case D3DTA_TFACTOR: strcpy( buffer, _T("D3DTA_TFACTOR") );
|
||||
break;
|
||||
default: return _T("D3DTA_DIFFUSE");
|
||||
}
|
||||
|
||||
if( dwTexArg&D3DTA_COMPLEMENT )
|
||||
strcat( buffer, _T(" | D3DTA_COMPLEMENT") );
|
||||
if( dwTexArg&D3DTA_ALPHAREPLICATE )
|
||||
strcat( buffer, _T(" | D3DTA_ALPHAREPLICATE") );
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOL CViewCodeDlg::OnInitDialog()
|
||||
{
|
||||
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_VIEWCODEEDITBOX);
|
||||
|
||||
pEdit->FmtLines(TRUE);
|
||||
pEdit->SetWindowText( _T("howdy\015\012doody") );
|
||||
|
||||
TCHAR* strTemplate = _T(" pd3dDevice->SetTextureStageState( %d, D3DTSS_%s%s );\015\012" );
|
||||
|
||||
TCHAR buffer[2048];
|
||||
TCHAR strOutText[2048] = _T("");
|
||||
|
||||
strcat( strOutText, _T("HRESULT SetShader( LPDIRECT3DDEVICE8 pd3dDevice )\015\012") );
|
||||
strcat( strOutText, _T("{\015\012") );
|
||||
|
||||
sprintf( buffer, strTemplate, 0, _T("COLORARG1, "), TranslateTextureArg( g_wT0CArg1 ) );
|
||||
if( g_wT0COp != D3DTOP_DISABLE && g_wT0COp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 0, _T("COLOROP, D3DTOP_"), TranslateTextureOp( g_wT0COp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 0, _T("COLORARG2, "), TranslateTextureArg( g_wT0CArg2 ) );
|
||||
if( g_wT0COp != D3DTOP_DISABLE && g_wT0COp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 0, _T("ALPHAARG1, "), TranslateTextureArg( g_wT0AArg1 ) );
|
||||
if( g_wT0AOp != D3DTOP_DISABLE && g_wT0AOp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 0, _T("ALPHAOP, D3DTOP_"), TranslateTextureOp( g_wT0AOp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 0, _T("ALPHAARG2, "), TranslateTextureArg( g_wT0AArg2 ) );
|
||||
if( g_wT0AOp != D3DTOP_DISABLE && g_wT0AOp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
strcat( strOutText, _T("\015\012") );
|
||||
|
||||
sprintf( buffer, strTemplate, 1, _T("COLORARG1, "), TranslateTextureArg( g_wT1CArg1 ) );
|
||||
if( g_wT1COp != D3DTOP_DISABLE && g_wT1COp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 1, _T("COLOROP, D3DTOP_"), TranslateTextureOp( g_wT1COp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 1, _T("COLORARG2, "), TranslateTextureArg( g_wT1CArg2 ) );
|
||||
if( g_wT1COp != D3DTOP_DISABLE && g_wT1COp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 1, _T("ALPHAARG1, "), TranslateTextureArg( g_wT1AArg1 ) );
|
||||
if( g_wT1AOp != D3DTOP_DISABLE && g_wT1AOp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 1, _T("ALPHAOP, D3DTOP_"), TranslateTextureOp( g_wT1AOp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 1, _T("ALPHAARG2, "), TranslateTextureArg( g_wT1AArg2 ) );
|
||||
if( g_wT1AOp != D3DTOP_DISABLE && g_wT1AOp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
strcat( strOutText, _T("\015\012") );
|
||||
|
||||
sprintf( buffer, strTemplate, 2, _T("COLORARG1, "), TranslateTextureArg( g_wT2CArg1 ) );
|
||||
if( g_wT2COp != D3DTOP_DISABLE && g_wT2COp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 2, _T("COLOROP, D3DTOP_"), TranslateTextureOp( g_wT2COp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 2, _T("COLORARG2, "), TranslateTextureArg( g_wT2CArg2 ) );
|
||||
if( g_wT2COp != D3DTOP_DISABLE && g_wT2COp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 2, _T("ALPHAARG1, "), TranslateTextureArg( g_wT2AArg1 ) );
|
||||
if( g_wT2AOp != D3DTOP_DISABLE && g_wT2AOp != D3DTOP_SELECTARG2 )
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 2, _T("ALPHAOP, D3DTOP_"), TranslateTextureOp( g_wT2AOp ) );
|
||||
strcat( strOutText, buffer );
|
||||
sprintf( buffer, strTemplate, 2, _T("ALPHAARG2, "), TranslateTextureArg( g_wT2AArg2 ) );
|
||||
if( g_wT2AOp != D3DTOP_DISABLE && g_wT2AOp != D3DTOP_SELECTARG1 )
|
||||
strcat( strOutText, buffer );
|
||||
strcat( strOutText, _T("\015\012") );
|
||||
strcat( strOutText, _T(" DWORD dwNumPasses;\015\012") );
|
||||
strcat( strOutText, _T(" return pd3dDevice->ValidateDevice( &dwNumPasses );\015\012") );
|
||||
strcat( strOutText, _T("}\015\012") );
|
||||
|
||||
pEdit->SetWindowText( strOutText );
|
||||
|
||||
return CDialog::OnInitDialog();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnViewCode()
|
||||
// Desc: When the user hits the "view code" button
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAppForm::OnViewCode()
|
||||
{
|
||||
CViewCodeDlg dlg;
|
||||
dlg.DoModal();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
353
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.cpp
Normal file
353
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.cpp
Normal file
@@ -0,0 +1,353 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: MFCTex.cpp
|
||||
//
|
||||
// Desc: Main file for the D3D multitexture app that uses MFC.
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <stdio.h>
|
||||
#include <mmsystem.h>
|
||||
#include <D3DX8.h>
|
||||
#include "D3DApp.h"
|
||||
#include "D3DFont.h"
|
||||
#include "D3DUtil.h"
|
||||
#include "DXUtil.h"
|
||||
#include "MFCTex.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The MFC macros are all listed here
|
||||
//-----------------------------------------------------------------------------
|
||||
IMPLEMENT_DYNCREATE( CAppDoc, CDocument )
|
||||
IMPLEMENT_DYNCREATE( CAppFrameWnd, CFrameWnd )
|
||||
IMPLEMENT_DYNCREATE( CAppForm, CFormView )
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP( CApp, CWinApp )
|
||||
//{{AFX_MSG_MAP(CApp)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP( CAppForm, CFormView )
|
||||
//{{AFX_MSG_MAP(CAppForm)
|
||||
ON_COMMAND( IDC_VIEWFULLSCREEN, OnToggleFullScreen )
|
||||
ON_COMMAND( IDC_VIEWCODE, OnViewCode )
|
||||
ON_COMMAND( IDM_CHANGEDEVICE, OnChangeDevice )
|
||||
ON_BN_CLICKED( IDM_CHANGEDEVICE, OnChangeDevice )
|
||||
ON_EN_CHANGE( IDC_TEX0_NAME, OnChangeTex )
|
||||
ON_EN_CHANGE( IDC_TEX1_NAME, OnChangeTex )
|
||||
ON_EN_CHANGE( IDC_TEX2_NAME, OnChangeTex )
|
||||
ON_BN_CLICKED( IDC_SELECTTEX0, OnSelectTexture0Name )
|
||||
ON_BN_CLICKED( IDC_SELECTTEX1, OnSelectTexture1Name )
|
||||
ON_BN_CLICKED( IDC_SELECTTEX2, OnSelectTexture2Name )
|
||||
ON_EN_CHANGE( IDC_BLEND_FACTOR, OnChangeBlendFactor )
|
||||
ON_EN_CHANGE( IDC_DIFFUSE_COLOR, OnChangeDiffuseColor )
|
||||
ON_CBN_SELCHANGE( IDC_PRESET_EFFECTS, OnChangePresetEffects )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_COLORARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_COLOROP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_COLORARG2, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_ALPHAARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_ALPHAOP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX0_ALPHAARG2, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_COLORARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_COLOROP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_COLORARG2, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_ALPHAARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_ALPHAOP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX1_ALPHAARG2, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_COLORARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_COLOROP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_COLORARG2, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_ALPHAARG1, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_ALPHAOP, OnChangeStageArgs )
|
||||
ON_CBN_SELCHANGE( IDC_TEX2_ALPHAARG2, OnChangeStageArgs )
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAppDoc, CDocument)
|
||||
//{{AFX_MSG_MAP(CAppDoc)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAppFrameWnd, CFrameWnd)
|
||||
//{{AFX_MSG_MAP(CAppFrameWnd)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global data and objects
|
||||
//-----------------------------------------------------------------------------
|
||||
CApp g_App;
|
||||
CAppForm* g_AppFormView = NULL;
|
||||
TCHAR* g_strAppTitle = _T("MFCTex: MFC Multitexture Sample");
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: FullScreenWndProc()
|
||||
// Desc: The WndProc funtion used when the app is in fullscreen mode. This is
|
||||
// needed simply to trap the ESC key.
|
||||
//-----------------------------------------------------------------------------
|
||||
LRESULT CALLBACK FullScreenWndProc( HWND hWnd, UINT msg, WPARAM wParam,
|
||||
LPARAM lParam )
|
||||
{
|
||||
if( msg == WM_CLOSE )
|
||||
{
|
||||
// User wants to exit, so go back to windowed mode and exit for real
|
||||
g_AppFormView->OnToggleFullScreen();
|
||||
g_App.GetMainWnd()->PostMessage( WM_CLOSE, 0, 0 );
|
||||
}
|
||||
|
||||
if( msg == WM_SETCURSOR )
|
||||
{
|
||||
SetCursor( NULL );
|
||||
}
|
||||
|
||||
if( msg == WM_KEYUP && wParam == VK_ESCAPE )
|
||||
{
|
||||
// User wants to leave fullscreen mode
|
||||
g_AppFormView->OnToggleFullScreen();
|
||||
}
|
||||
|
||||
return DefWindowProc( hWnd, msg, wParam, lParam );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: CheckForLostFullscreen()
|
||||
// Desc: If fullscreen and device was lost (probably due to alt-tab),
|
||||
// automatically switch to windowed mode
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::CheckForLostFullscreen()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if( m_bWindowed )
|
||||
return S_OK;
|
||||
|
||||
if( FAILED( hr = m_pd3dDevice->TestCooperativeLevel() ) )
|
||||
ForceWindowed();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: PreCreateWindow()
|
||||
// Desc: Change the window style (so it cannot maximize or be sized) before
|
||||
// the main frame window is created.
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL CAppFrameWnd::PreCreateWindow( CREATESTRUCT& cs )
|
||||
{
|
||||
cs.style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX;
|
||||
return CFrameWnd::PreCreateWindow( cs );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InitInstance()
|
||||
// Desc: This is the main entry point for the application. The MFC window stuff
|
||||
// is initialized here. See also the main initialization routine for the
|
||||
// CAppForm class, which is called indirectly from here.
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL CApp::InitInstance()
|
||||
{
|
||||
// Asscociate the MFC app with the frame window and doc/view classes
|
||||
AddDocTemplate( new CSingleDocTemplate( IDR_MAINFRAME,
|
||||
RUNTIME_CLASS(CAppDoc),
|
||||
RUNTIME_CLASS(CAppFrameWnd),
|
||||
RUNTIME_CLASS(CAppForm) ) );
|
||||
|
||||
// Dispatch commands specified on the command line (req'd by MFC). This
|
||||
// also initializes the the CAppDoc, CAppFrameWnd, and CAppForm classes.
|
||||
CCommandLineInfo cmdInfo;
|
||||
ParseCommandLine( cmdInfo );
|
||||
if( !ProcessShellCommand( cmdInfo ) )
|
||||
return FALSE;
|
||||
|
||||
if( !g_AppFormView->IsReady() )
|
||||
return FALSE;
|
||||
|
||||
g_AppFormView->GetParentFrame()->RecalcLayout();
|
||||
g_AppFormView->ResizeParentToFit( FALSE );
|
||||
|
||||
m_pMainWnd->SetWindowText( g_strAppTitle );
|
||||
m_pMainWnd->UpdateWindow();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnIdle()
|
||||
// Desc: Uses idle time to render the 3D scene.
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL CApp::OnIdle( LONG )
|
||||
{
|
||||
// Do not render if the app is minimized
|
||||
if( m_pMainWnd->IsIconic() )
|
||||
return FALSE;
|
||||
|
||||
// Update and render a frame
|
||||
if( g_AppFormView->IsReady() )
|
||||
{
|
||||
g_AppFormView->CheckForLostFullscreen();
|
||||
g_AppFormView->RenderScene();
|
||||
}
|
||||
|
||||
// Keep requesting more idle time
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: CAppForm()
|
||||
// Desc: Constructor for the dialog resource form
|
||||
//-----------------------------------------------------------------------------
|
||||
CAppForm::CAppForm()
|
||||
:CFormView( IDD_FORMVIEW )
|
||||
{
|
||||
g_AppFormView = this;
|
||||
m_bActive = FALSE;
|
||||
m_bReady = FALSE;
|
||||
m_bWindowed = TRUE;
|
||||
|
||||
m_dwAdapter = 0L;
|
||||
m_pD3D = NULL;
|
||||
m_pd3dDevice = NULL;
|
||||
m_bUseDepthBuffer = TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: ~CAppForm()
|
||||
// Desc: Destructor for the dialog resource form. Shuts down the app
|
||||
//-----------------------------------------------------------------------------
|
||||
CAppForm::~CAppForm()
|
||||
{
|
||||
Cleanup3DEnvironment();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnInitialUpdate()
|
||||
// Desc: When the AppForm object is created, this function is called to
|
||||
// initialize it. Here we getting access ptrs to some of the controls,
|
||||
// and setting the initial state of some of them as well.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnInitialUpdate()
|
||||
{
|
||||
// Update the UI
|
||||
CFormView::OnInitialUpdate();
|
||||
InitializeUIControls();
|
||||
|
||||
// Save static reference to the render window
|
||||
m_hwndRenderWindow = GetDlgItem(IDC_RENDERVIEW)->GetSafeHwnd();
|
||||
|
||||
// Register a class for a fullscreen window
|
||||
WNDCLASS wndClass = { CS_HREDRAW | CS_VREDRAW, FullScreenWndProc, 0, 0, NULL,
|
||||
NULL, NULL, (HBRUSH)GetStockObject(WHITE_BRUSH), NULL,
|
||||
_T("Fullscreen Window") };
|
||||
RegisterClass( &wndClass );
|
||||
|
||||
// We create the fullscreen window (not visible) at startup, so it can
|
||||
// be the focus window. The focus window can only be set at CreateDevice
|
||||
// time, not in a Reset, so ToggleFullscreen wouldn't work unless we have
|
||||
// already set up the fullscreen focus window.
|
||||
m_hwndRenderFullScreen = CreateWindow( _T("Fullscreen Window"), NULL,
|
||||
WS_POPUP, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, 100, 100,
|
||||
GetTopLevelParent()->GetSafeHwnd(), 0L, NULL, 0L );
|
||||
|
||||
// Note that for the MFC samples, the device window and focus window
|
||||
// are not the same.
|
||||
CD3DApplication::m_hWnd = m_hwndRenderWindow;
|
||||
CD3DApplication::m_hWndFocus = m_hwndRenderFullScreen;
|
||||
CD3DApplication::Create( AfxGetInstanceHandle() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnChangeDevice()
|
||||
// Desc: Use hit the "Change Device.." button. Display the dialog for the user
|
||||
// to select a new device/mode, and call Change3DEnvironment to
|
||||
// use the new device/mode.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::OnChangeDevice()
|
||||
{
|
||||
UserSelectNewDevice();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: AdjustWindowForChange()
|
||||
// Desc: Adjusts the window properties for windowed or fullscreen mode
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::AdjustWindowForChange()
|
||||
{
|
||||
if( m_bWindowed )
|
||||
{
|
||||
::ShowWindow( m_hwndRenderFullScreen, SW_HIDE );
|
||||
CD3DApplication::m_hWnd = m_hwndRenderWindow;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ::IsIconic( m_hwndRenderFullScreen ) )
|
||||
::ShowWindow( m_hwndRenderFullScreen, SW_RESTORE );
|
||||
::ShowWindow( m_hwndRenderFullScreen, SW_SHOW );
|
||||
CD3DApplication::m_hWnd = m_hwndRenderFullScreen;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OnToggleFullScreen()
|
||||
// Desc: Called when user toggles the fullscreen mode
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAppForm::OnToggleFullScreen()
|
||||
{
|
||||
ToggleFullscreen();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
179
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.dsp
Normal file
179
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.dsp
Normal file
@@ -0,0 +1,179 @@
|
||||
# Microsoft Developer Studio Project File - Name="MFCTex" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=MFCTex - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mfctex.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mfctex.mak" CFG="MFCTex - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "MFCTex - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "MFCTex - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "MFCTex - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 2
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 d3dx8.lib d3d8.lib d3dxof.lib dxguid.lib ddraw.lib winmm.lib /nologo /subsystem:windows /machine:I386 /stack:0x200000,0x200000
|
||||
|
||||
!ELSEIF "$(CFG)" == "MFCTex - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 2
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib ddraw.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /stack:0x200000,0x200000
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "MFCTex - Win32 Release"
|
||||
# Name "MFCTex - Win32 Debug"
|
||||
# Begin Group "Resource"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\directx.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\stdafx.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\stdafx.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\winmain.rc
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Common"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\src\d3dapp.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\d3dapp.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\src\d3dfile.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\d3dfile.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\src\d3dfont.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\d3dfont.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\src\d3dutil.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\d3dutil.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\src\dxutil.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\dxutil.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\MFCForm.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\MFCTex.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\MFCTex.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mtexture.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\texargs.h
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
29
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.dsw
Normal file
29
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.dsw
Normal file
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "MFCTex"=.\mfctex.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
182
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.h
Normal file
182
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.h
Normal file
@@ -0,0 +1,182 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: MFCTex.h
|
||||
//
|
||||
// Desc: Header file for a D3DIM app that uses MFC
|
||||
//
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifndef D3D_MFC_APP_H
|
||||
#define D3D_MFC_APP_H
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file
|
||||
#endif
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CAppDoc
|
||||
// Desc: Overridden CDocument class needed for the CFormView
|
||||
//-----------------------------------------------------------------------------
|
||||
class CAppDoc : public CDocument
|
||||
{
|
||||
protected:
|
||||
DECLARE_DYNCREATE(CAppDoc)
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CAppDoc)
|
||||
public:
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
//{{AFX_MSG(CAppDoc)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CAppFrameWnd
|
||||
// Desc: CFrameWnd-based class needed to override the CFormView's window style
|
||||
//-----------------------------------------------------------------------------
|
||||
class CAppFrameWnd : public CFrameWnd
|
||||
{
|
||||
protected:
|
||||
DECLARE_DYNCREATE(CAppFrameWnd)
|
||||
public:
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CAppFrameWnd)
|
||||
public:
|
||||
virtual BOOL PreCreateWindow( CREATESTRUCT& cs );
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CAppFrameWnd)
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CApp
|
||||
// Desc: Main MFCapplication class derived from CWinApp.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CApp)
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
virtual BOOL OnIdle( LONG );
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
//{{AFX_MSG(CApp)
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CAppForm
|
||||
// Desc: CFormView-based class which allows the UI to be created with a form
|
||||
// (dialog) resource. This class manages all the controls on the form.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CAppForm : public CFormView, public CD3DApplication
|
||||
{
|
||||
private:
|
||||
CD3DFont* m_pFont; // Font for drawing text
|
||||
HWND m_hwndRenderWindow;
|
||||
HWND m_hwndRenderFullScreen;
|
||||
|
||||
TCHAR m_strFileName[MAX_PATH];
|
||||
TCHAR m_strInitialDir[MAX_PATH];
|
||||
|
||||
CComboBox *m_pTex0ColorArg1, *m_pTex0ColorOp, *m_pTex0ColorArg2;
|
||||
CComboBox *m_pTex0AlphaArg1, *m_pTex0AlphaOp, *m_pTex0AlphaArg2;
|
||||
CComboBox *m_pTex1ColorArg1, *m_pTex1ColorOp, *m_pTex1ColorArg2;
|
||||
CComboBox *m_pTex1AlphaArg1, *m_pTex1AlphaOp, *m_pTex1AlphaArg2;
|
||||
CComboBox *m_pTex2ColorArg1, *m_pTex2ColorOp, *m_pTex2ColorArg2;
|
||||
CComboBox *m_pTex2AlphaArg1, *m_pTex2AlphaOp, *m_pTex2AlphaArg2;
|
||||
|
||||
PDIRECT3DVERTEXBUFFER8 m_pVBWalls;
|
||||
PDIRECT3DVERTEXBUFFER8 m_pVBFloorCeiling;
|
||||
|
||||
HRESULT ConfirmDevice( D3DCAPS8*,DWORD,D3DFORMAT );
|
||||
HRESULT OneTimeSceneInit();
|
||||
HRESULT InitDeviceObjects();
|
||||
HRESULT RestoreDeviceObjects();
|
||||
HRESULT FrameMove();
|
||||
HRESULT Render();
|
||||
HRESULT InvalidateDeviceObjects();
|
||||
HRESULT DeleteDeviceObjects();
|
||||
HRESULT FinalCleanup();
|
||||
virtual HRESULT AdjustWindowForChange();
|
||||
|
||||
VOID UpdateUIForDeviceCapabilites();
|
||||
VOID InitializeUIControls();
|
||||
VOID UpdateStageColor( WORD stage, LONG op, LONG arg1, LONG arg2 );
|
||||
VOID UpdateStageAlpha( WORD stage, LONG op, LONG arg1, LONG arg2 );
|
||||
VOID SetTextureMaps( const TCHAR*, const TCHAR*, const TCHAR* );
|
||||
|
||||
public:
|
||||
BOOL IsReady() { return m_bReady; }
|
||||
TCHAR* PstrFrameStats() { return m_strFrameStats; }
|
||||
VOID RenderScene() { Render3DEnvironment(); }
|
||||
HRESULT CheckForLostFullscreen();
|
||||
|
||||
protected:
|
||||
DECLARE_DYNCREATE(CAppForm)
|
||||
|
||||
CAppForm();
|
||||
virtual ~CAppForm();
|
||||
public:
|
||||
//{{AFX_DATA(CAppForm)
|
||||
enum { IDD = IDD_FORMVIEW };
|
||||
//}}AFX_DATA
|
||||
|
||||
//{{AFX_VIRTUAL(CAppForm)
|
||||
virtual void OnInitialUpdate();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
//{{AFX_MSG(CAppForm)
|
||||
afx_msg VOID OnToggleFullScreen();
|
||||
afx_msg VOID OnViewCode();
|
||||
afx_msg VOID OnChangeDevice();
|
||||
afx_msg VOID OnChangePresetEffects();
|
||||
afx_msg VOID OnChangeTex();
|
||||
afx_msg VOID OnSelectTexture0Name();
|
||||
afx_msg VOID OnSelectTexture1Name();
|
||||
afx_msg VOID OnSelectTexture2Name();
|
||||
afx_msg VOID OnChangeBlendFactor();
|
||||
afx_msg VOID OnChangeDiffuseColor();
|
||||
afx_msg VOID OnChangeStageArgs();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
278
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.mak
Normal file
278
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mfctex.mak
Normal file
@@ -0,0 +1,278 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on mfctex.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=MFCTex - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to MFCTex - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "MFCTex - Win32 Release" && "$(CFG)" != "MFCTex - Win32 Debug"
|
||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mfctex.mak" CFG="MFCTex - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "MFCTex - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "MFCTex - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
!ERROR An invalid configuration is specified.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "MFCTex - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Release
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\mfctex.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\d3dapp.obj"
|
||||
-@erase "$(INTDIR)\d3dfile.obj"
|
||||
-@erase "$(INTDIR)\d3dfont.obj"
|
||||
-@erase "$(INTDIR)\d3dutil.obj"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\MFCForm.obj"
|
||||
-@erase "$(INTDIR)\MFCTex.obj"
|
||||
-@erase "$(INTDIR)\mtexture.obj"
|
||||
-@erase "$(INTDIR)\stdafx.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\winmain.res"
|
||||
-@erase "$(OUTDIR)\mfctex.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /Fp"$(INTDIR)\mfctex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
RSC=rc.exe
|
||||
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winmain.res" /d "NDEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mfctex.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=d3dx8.lib d3d8.lib d3dxof.lib dxguid.lib ddraw.lib winmm.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\mfctex.pdb" /machine:I386 /out:"$(OUTDIR)\mfctex.exe" /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\stdafx.obj" \
|
||||
"$(INTDIR)\d3dapp.obj" \
|
||||
"$(INTDIR)\d3dfile.obj" \
|
||||
"$(INTDIR)\d3dfont.obj" \
|
||||
"$(INTDIR)\d3dutil.obj" \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\MFCForm.obj" \
|
||||
"$(INTDIR)\MFCTex.obj" \
|
||||
"$(INTDIR)\mtexture.obj" \
|
||||
"$(INTDIR)\winmain.res"
|
||||
|
||||
"$(OUTDIR)\mfctex.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "MFCTex - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\mfctex.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\d3dapp.obj"
|
||||
-@erase "$(INTDIR)\d3dfile.obj"
|
||||
-@erase "$(INTDIR)\d3dfont.obj"
|
||||
-@erase "$(INTDIR)\d3dutil.obj"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\MFCForm.obj"
|
||||
-@erase "$(INTDIR)\MFCTex.obj"
|
||||
-@erase "$(INTDIR)\mtexture.obj"
|
||||
-@erase "$(INTDIR)\stdafx.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(INTDIR)\winmain.res"
|
||||
-@erase "$(OUTDIR)\mfctex.exe"
|
||||
-@erase "$(OUTDIR)\mfctex.ilk"
|
||||
-@erase "$(OUTDIR)\mfctex.pdb"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /Fp"$(INTDIR)\mfctex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
RSC=rc.exe
|
||||
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winmain.res" /d "_DEBUG" /d "_AFXDLL"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mfctex.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib ddraw.lib winmm.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\mfctex.pdb" /debug /machine:I386 /out:"$(OUTDIR)\mfctex.exe" /pdbtype:sept /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\stdafx.obj" \
|
||||
"$(INTDIR)\d3dapp.obj" \
|
||||
"$(INTDIR)\d3dfile.obj" \
|
||||
"$(INTDIR)\d3dfont.obj" \
|
||||
"$(INTDIR)\d3dutil.obj" \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\MFCForm.obj" \
|
||||
"$(INTDIR)\MFCTex.obj" \
|
||||
"$(INTDIR)\mtexture.obj" \
|
||||
"$(INTDIR)\winmain.res"
|
||||
|
||||
"$(OUTDIR)\mfctex.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("mfctex.dep")
|
||||
!INCLUDE "mfctex.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "mfctex.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "MFCTex - Win32 Release" || "$(CFG)" == "MFCTex - Win32 Debug"
|
||||
SOURCE=.\stdafx.cpp
|
||||
|
||||
"$(INTDIR)\stdafx.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
SOURCE=.\winmain.rc
|
||||
|
||||
"$(INTDIR)\winmain.res" : $(SOURCE) "$(INTDIR)"
|
||||
$(RSC) $(RSC_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\d3dapp.cpp
|
||||
|
||||
"$(INTDIR)\d3dapp.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\d3dfile.cpp
|
||||
|
||||
"$(INTDIR)\d3dfile.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\d3dfont.cpp
|
||||
|
||||
"$(INTDIR)\d3dfont.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\d3dutil.cpp
|
||||
|
||||
"$(INTDIR)\d3dutil.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\dxutil.cpp
|
||||
|
||||
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=.\MFCForm.cpp
|
||||
|
||||
"$(INTDIR)\MFCForm.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
SOURCE=.\MFCTex.cpp
|
||||
|
||||
"$(INTDIR)\MFCTex.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
SOURCE=.\mtexture.cpp
|
||||
|
||||
"$(INTDIR)\mtexture.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
506
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mtexture.cpp
Normal file
506
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/mtexture.cpp
Normal file
@@ -0,0 +1,506 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: mtexture.cpp
|
||||
//
|
||||
// Desc: Example code showing how to do multitexturing in D3D
|
||||
//
|
||||
// Note: This code uses the D3D Framework helper library.
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#define STRICT
|
||||
#include "stdafx.h"
|
||||
#include <tchar.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <D3DX8.h>
|
||||
#include "D3DApp.h"
|
||||
#include "D3DFont.h"
|
||||
#include "D3DFile.h"
|
||||
#include "D3DUtil.h"
|
||||
#include "DXUtil.h"
|
||||
#include "MFCTex.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Define a custom vertex that uses multiple sets of tex coords
|
||||
//-----------------------------------------------------------------------------
|
||||
struct WALLVERTEX
|
||||
{
|
||||
D3DXVECTOR3 p;
|
||||
DWORD dwColor;
|
||||
FLOAT tu1, tv1;
|
||||
FLOAT tu2, tv2;
|
||||
FLOAT tu3, tv3;
|
||||
};
|
||||
|
||||
#define D3DFVF_WALLVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX3 )
|
||||
|
||||
#define FILL_WALLVERTEX( v, ax, ay, az, acolor, atu1, atv1, atu2, atv2, atu3, atv3 ) \
|
||||
{ v.p.x = ax; v.p.y = ay; v.p.z = az; v.dwColor = acolor; \
|
||||
v.tu1 = atu1; v.tv1 = atv1; v.tu2 = atu2; v.tv2 = atv2;\
|
||||
v.tu3 = atu3; v.tv3 = atv3;\
|
||||
}
|
||||
|
||||
#define WALL_VERT_NUM 10
|
||||
|
||||
|
||||
struct FLOORCEILINGVERTEX
|
||||
{
|
||||
D3DXVECTOR3 p;
|
||||
D3DXVECTOR3 n;
|
||||
FLOAT tu, tv;
|
||||
};
|
||||
|
||||
#define D3DFVF_FLOORCEILINGVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
|
||||
|
||||
#define FILL_FLOORCEILINGVERTEX( v, ax, ay, az, nx, ny, nz, atu, atv ) \
|
||||
{ v.p.x = ax; v.p.y = ay; v.p.z = az; v.n.x = nx; v.n.y = ny; v.n.z = nz; \
|
||||
v.tu = atu; v.tv = atv; \
|
||||
}
|
||||
|
||||
#define FLOORCEILING_VERT_NUM 12
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Storage of the texture stage states
|
||||
//-----------------------------------------------------------------------------
|
||||
WORD g_wT0COp, g_wT1COp, g_wT2COp;
|
||||
WORD g_wT0CArg1, g_wT1CArg1, g_wT2CArg1;
|
||||
WORD g_wT0CArg2, g_wT1CArg2, g_wT2CArg2;
|
||||
WORD g_wT0AOp, g_wT1AOp, g_wT2AOp;
|
||||
WORD g_wT0AArg1, g_wT1AArg1, g_wT2AArg1;
|
||||
WORD g_wT0AArg2, g_wT1AArg2, g_wT2AArg2;
|
||||
DWORD g_dwTextureFactor = 0xffffffff;
|
||||
DWORD g_dwDiffuseColor = 0xffffffff;
|
||||
DWORD g_dwMaxTextureBlendStages = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Function prototypes and global (or static) variables
|
||||
//-----------------------------------------------------------------------------
|
||||
LPDIRECT3DTEXTURE8 g_pFloorTexture = NULL;
|
||||
LPDIRECT3DTEXTURE8 g_pTexture0 = NULL;
|
||||
LPDIRECT3DTEXTURE8 g_pTexture1 = NULL;
|
||||
LPDIRECT3DTEXTURE8 g_pTexture2 = NULL;
|
||||
|
||||
// Filenames for the textures (one for each texture stage)
|
||||
BOOL g_bTexturesChanged = FALSE;
|
||||
TCHAR g_strTexture0[256];
|
||||
TCHAR g_strTexture1[256];
|
||||
TCHAR g_strTexture2[256];
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OneTimeSceneInit()
|
||||
// Desc: Called during initial app startup, this function performs all the
|
||||
// permanent initialization.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::OneTimeSceneInit()
|
||||
{
|
||||
m_pFont = new CD3DFont( _T("Arial"), 9, D3DFONT_BOLD );
|
||||
|
||||
// Create some textures
|
||||
_tcscpy( g_strTexture0, _T("env2.bmp") );
|
||||
_tcscpy( g_strTexture1, _T("spotlite.bmp") );
|
||||
_tcscpy( g_strTexture2, _T("env3.bmp") );
|
||||
|
||||
g_pFloorTexture = NULL;
|
||||
g_pTexture0 = NULL;
|
||||
g_pTexture1 = NULL;
|
||||
g_pTexture2 = NULL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: FrameMove()
|
||||
// Desc: Called once per frame, the call is the entry point for animating
|
||||
// the scene.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::FrameMove()
|
||||
{
|
||||
// Setup the world spin matrix
|
||||
D3DXMATRIX matWorldSpin;
|
||||
D3DXMatrixRotationY( &matWorldSpin, -m_fTime/9 );
|
||||
m_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorldSpin );
|
||||
|
||||
// keep texture coordinates in a reasonable range
|
||||
static FLOAT fTimeKeySub = 0.0f;
|
||||
FLOAT fTexTimeKey = m_fTime + fTimeKeySub;
|
||||
if( fTexTimeKey > 160.0f )
|
||||
{
|
||||
fTimeKeySub -= 160.0f;
|
||||
}
|
||||
|
||||
WALLVERTEX* pVertices;
|
||||
m_pVBWalls->Lock( 0, 0, (BYTE**)&pVertices, 0 );
|
||||
// Rotate the light map around the walls each frame
|
||||
for( int i=0; i<(WALL_VERT_NUM/2); i++ )
|
||||
{
|
||||
pVertices[2*i+0].tu2 = fTexTimeKey/(WALL_VERT_NUM/2)+i;
|
||||
pVertices[2*i+1].tu2 = fTexTimeKey/(WALL_VERT_NUM/2)+i;
|
||||
}
|
||||
for( i=0; i<WALL_VERT_NUM; i++ )
|
||||
pVertices[i].dwColor = g_dwDiffuseColor;
|
||||
m_pVBWalls->Unlock();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: SetTextureStageStatesForRendering()
|
||||
// Desc: Sets up the texture stage, as per the global variables defining each
|
||||
// stage.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT SetTextureStageStatesForRendering( LPDIRECT3DDEVICE8 pd3dDevice )
|
||||
{
|
||||
// If new textures were selected, restore them now
|
||||
if( g_bTexturesChanged )
|
||||
{
|
||||
SAFE_RELEASE( g_pFloorTexture );
|
||||
SAFE_RELEASE( g_pTexture0 );
|
||||
SAFE_RELEASE( g_pTexture1 );
|
||||
SAFE_RELEASE( g_pTexture2 );
|
||||
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, _T("floor.bmp"), &g_pFloorTexture ) ) )
|
||||
g_pFloorTexture = NULL;
|
||||
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture0, &g_pTexture0 ) ) )
|
||||
g_pTexture0 = NULL;
|
||||
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture1, &g_pTexture1 ) ) )
|
||||
g_pTexture1 = NULL;
|
||||
if( FAILED( D3DUtil_CreateTexture( pd3dDevice, g_strTexture2, &g_pTexture2 ) ) )
|
||||
g_pTexture2 = NULL;
|
||||
g_bTexturesChanged = FALSE;
|
||||
}
|
||||
|
||||
pd3dDevice->SetRenderState( D3DRS_TEXTUREFACTOR, g_dwTextureFactor );
|
||||
|
||||
pd3dDevice->SetTexture( 0, g_pTexture0 );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, g_wT0CArg1 );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, g_wT0COp );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, g_wT0CArg2 );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, g_wT0AArg1 );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, g_wT0AOp );
|
||||
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, g_wT0AArg2 );
|
||||
|
||||
if( g_dwMaxTextureBlendStages > 1 )
|
||||
{
|
||||
pd3dDevice->SetTexture( 1, g_pTexture1 );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, g_wT1CArg1 );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, g_wT1COp );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, g_wT1CArg2 );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG1, g_wT1AArg1 );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, g_wT1AOp );
|
||||
pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG2, g_wT1AArg2 );
|
||||
}
|
||||
|
||||
if( g_dwMaxTextureBlendStages > 2)
|
||||
{
|
||||
pd3dDevice->SetTexture( 2, g_pTexture2 );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG1, g_wT2CArg1 );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, g_wT2COp );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_COLORARG2, g_wT2CArg2 );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAARG1, g_wT2AArg1 );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAOP, g_wT2AOp );
|
||||
pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAARG2, g_wT2AArg2 );
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Render()
|
||||
// Desc: Called once per frame, the call is the entry point for 3d
|
||||
// rendering. This function sets up render states, clears the
|
||||
// viewport, and renders the scene.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::Render()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
m_pd3dDevice->Clear( 0L, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
|
||||
0x000000ff, 1.0f, 0L );
|
||||
|
||||
// Begin the scene
|
||||
if( FAILED( m_pd3dDevice->BeginScene() ) )
|
||||
return E_FAIL;
|
||||
|
||||
// Render the floor and ceiling (using single-textured vertices)
|
||||
m_pd3dDevice->SetTexture( 0, g_pFloorTexture );
|
||||
m_pd3dDevice->SetTexture( 1, NULL );
|
||||
m_pd3dDevice->SetTexture( 2, NULL );
|
||||
|
||||
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
|
||||
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
|
||||
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
|
||||
m_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );
|
||||
m_pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
|
||||
m_pd3dDevice->SetTextureStageState( 2, D3DTSS_COLOROP, D3DTOP_DISABLE );
|
||||
m_pd3dDevice->SetTextureStageState( 2, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
|
||||
|
||||
m_pd3dDevice->SetVertexShader( D3DFVF_FLOORCEILINGVERTEX );
|
||||
m_pd3dDevice->SetStreamSource( 0, m_pVBFloorCeiling, sizeof(FLOORCEILINGVERTEX) );
|
||||
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 4 );
|
||||
|
||||
// Setup the texture stages' state
|
||||
SetTextureStageStatesForRendering( m_pd3dDevice );
|
||||
|
||||
// Validate the device. This checks to see if the texture stage states we
|
||||
// set up are valid for the device. If so, render the object.
|
||||
DWORD dwNumPasses;
|
||||
if( SUCCEEDED( hr = m_pd3dDevice->ValidateDevice( &dwNumPasses ) ) )
|
||||
{
|
||||
// Render the multi-textured object
|
||||
m_pd3dDevice->SetVertexShader( D3DFVF_WALLVERTEX );
|
||||
m_pd3dDevice->SetStreamSource( 0, m_pVBWalls, sizeof(WALLVERTEX) );
|
||||
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 8);
|
||||
}
|
||||
|
||||
TCHAR* pstr;
|
||||
switch( hr )
|
||||
{
|
||||
case D3DERR_UNSUPPORTEDCOLOROPERATION:
|
||||
pstr = _T("Unsupported color op");
|
||||
break;
|
||||
case D3DERR_UNSUPPORTEDCOLORARG:
|
||||
pstr = _T("Unsupported color arg");
|
||||
break;
|
||||
case D3DERR_UNSUPPORTEDALPHAOPERATION:
|
||||
pstr = _T("Unsupported alpha op");
|
||||
break;
|
||||
case D3DERR_UNSUPPORTEDALPHAARG:
|
||||
pstr = _T("Unsupported alpha arg");
|
||||
break;
|
||||
case D3DERR_TOOMANYOPERATIONS:
|
||||
pstr = _T("Too many texture ops");
|
||||
break;
|
||||
case D3DERR_WRONGTEXTUREFORMAT:
|
||||
pstr = _T("Incompatible texture formats");
|
||||
break;
|
||||
case D3DERR_CONFLICTINGRENDERSTATE:
|
||||
pstr = _T("Conflicting render state");
|
||||
break;
|
||||
case S_OK:
|
||||
pstr = _T("Device validated OK");
|
||||
break;
|
||||
default:
|
||||
pstr = _T("Using DX5 driver");
|
||||
break;
|
||||
}
|
||||
m_pFont->DrawText( 2, 0, D3DCOLOR_ARGB(255,255,255,0), pstr );
|
||||
|
||||
// End the scene.
|
||||
m_pd3dDevice->EndScene();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InitDeviceObjects()
|
||||
// Desc: Initialize scene objects.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::InitDeviceObjects()
|
||||
{
|
||||
UpdateUIForDeviceCapabilites();
|
||||
|
||||
// Initialize the font's internal textures
|
||||
m_pFont->InitDeviceObjects( m_pd3dDevice );
|
||||
|
||||
// Create the walls vertex buffer
|
||||
if( FAILED( m_pd3dDevice->CreateVertexBuffer( WALL_VERT_NUM * sizeof(WALLVERTEX),
|
||||
0, D3DFVF_WALLVERTEX, D3DPOOL_MANAGED, &m_pVBWalls ) ) )
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
WALLVERTEX* pVertices;
|
||||
m_pVBWalls->Lock( 0, 0, (BYTE**)&pVertices, 0 );
|
||||
|
||||
FILL_WALLVERTEX( pVertices[ 0], -5.0f,-5.0f, 5.0f, g_dwDiffuseColor, 0.00f, 1.0f, 1.00, 1.0f, 1.00, 1.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 1], -5.0f, 5.0f, 5.0f, g_dwDiffuseColor, 0.00f, 0.0f, 1.00, 0.0f, 1.00, 0.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 2], 5.0f,-5.0f, 5.0f, g_dwDiffuseColor, 1.00f, 1.0f, 0.00, 1.0f, 0.00, 1.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 3], 5.0f, 5.0f, 5.0f, g_dwDiffuseColor, 1.00f, 0.0f, 0.00, 0.0f, 0.00, 0.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 4], 5.0f,-5.0f,-5.0f, g_dwDiffuseColor, 2.00f, 1.0f, 1.00, 1.0f, 1.00, 1.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 5], 5.0f, 5.0f,-5.0f, g_dwDiffuseColor, 2.00f, 0.0f, 1.00, 0.0f, 1.00, 0.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 6], -5.0f,-5.0f,-5.0f, g_dwDiffuseColor, 3.00f, 1.0f, 1.00, 1.0f, 1.00, 1.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 7], -5.0f, 5.0f,-5.0f, g_dwDiffuseColor, 3.00f, 0.0f, 1.00, 0.0f, 1.00, 0.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 8], -5.0f,-5.0f, 5.0f, g_dwDiffuseColor, 4.00f, 1.0f, 0.00, 1.0f, 0.00, 1.0f );
|
||||
FILL_WALLVERTEX( pVertices[ 9], -5.0f, 5.0f, 5.0f, g_dwDiffuseColor, 4.00f, 0.0f, 0.00, 0.0f, 0.00, 0.0f );
|
||||
|
||||
m_pVBWalls->Unlock();
|
||||
|
||||
// Create the floor/ceiling vertex buffer
|
||||
if( FAILED( m_pd3dDevice->CreateVertexBuffer( FLOORCEILING_VERT_NUM * sizeof(FLOORCEILINGVERTEX),
|
||||
0, D3DFVF_FLOORCEILINGVERTEX, D3DPOOL_MANAGED, &m_pVBFloorCeiling ) ) )
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
FLOORCEILINGVERTEX* pFloorVertices;
|
||||
m_pVBFloorCeiling->Lock( 0, 0, (BYTE**)&pFloorVertices, 0 );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[0], -5,-5, 5, 0, 1, 0, 0.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[1], 5,-5, 5, 0, 1, 0, 0.0f, 1.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[2], 5,-5,-5, 0, 1, 0, 1.0f, 1.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[3], 5,-5,-5, 0, 1, 0, 1.0f, 1.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[4], -5,-5,-5, 0, 1, 0, 1.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[5], -5,-5, 5, 0, 1, 0, 0.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[6], 5, 5,-5, 0,-1, 0, 1.0f, 1.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[7], 5, 5, 5, 0,-1, 0, 0.0f, 1.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[8], -5, 5, 5, 0,-1, 0, 0.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[9], -5, 5, 5, 0,-1, 0, 0.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[10], -5, 5,-5, 0,-1, 0, 1.0f, 0.0f );
|
||||
FILL_FLOORCEILINGVERTEX( pFloorVertices[11], 5, 5,-5, 0,-1, 0, 1.0f, 1.0f );
|
||||
m_pVBFloorCeiling->Unlock();
|
||||
|
||||
g_bTexturesChanged = TRUE; // Force texture reload
|
||||
|
||||
g_dwMaxTextureBlendStages = m_d3dCaps.MaxTextureBlendStages;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: RestoreDeviceObjects()
|
||||
// Desc: Initialize scene objects.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::RestoreDeviceObjects()
|
||||
{
|
||||
m_pFont->RestoreDeviceObjects();
|
||||
|
||||
// Create and set up the shine materials w/ textures
|
||||
D3DMATERIAL8 mtrl;
|
||||
D3DUtil_InitMaterial( mtrl, 1.0f, 1.0f, 1.0f );
|
||||
m_pd3dDevice->SetMaterial( &mtrl );
|
||||
|
||||
// Set the transform matrices
|
||||
D3DXMATRIX matWorld, matView, matProj;
|
||||
D3DXVECTOR3 vEyePt = D3DXVECTOR3( 0.0f, 0.0f, -4.0f );
|
||||
D3DXVECTOR3 vLookatPt = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
|
||||
D3DXVECTOR3 vUpVec = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
|
||||
|
||||
D3DXMatrixIdentity( &matWorld );
|
||||
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
|
||||
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/2, 1.0f, 1.0f, 1000.0f );
|
||||
|
||||
m_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
|
||||
m_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
|
||||
m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
|
||||
|
||||
// Set any appropiate state
|
||||
m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
|
||||
m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InvalidateDeviceObjects()
|
||||
// Desc: Called when the device-dependent objects are about to be lost.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::InvalidateDeviceObjects()
|
||||
{
|
||||
m_pFont->InvalidateDeviceObjects();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DeleteDeviceObjects()
|
||||
// Desc: Called when the app is exiting, or the device is being changed,
|
||||
// this function deletes any device dependent objects.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::DeleteDeviceObjects()
|
||||
{
|
||||
m_pFont->DeleteDeviceObjects();
|
||||
SAFE_RELEASE( m_pVBWalls );
|
||||
SAFE_RELEASE( m_pVBFloorCeiling );
|
||||
SAFE_RELEASE( g_pFloorTexture );
|
||||
SAFE_RELEASE( g_pTexture0 );
|
||||
SAFE_RELEASE( g_pTexture1 );
|
||||
SAFE_RELEASE( g_pTexture2 );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: FinalCleanup()
|
||||
// Desc: Called before the app exits, this function gives the app the chance
|
||||
// to cleanup after itself.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::FinalCleanup()
|
||||
{
|
||||
SAFE_DELETE( m_pFont );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: ConfirmDevice()
|
||||
// Desc: Called during device intialization, this code checks the device
|
||||
// for some minimum set of capabilities
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CAppForm::ConfirmDevice( D3DCAPS8* pCaps, DWORD dwBehavior,
|
||||
D3DFORMAT Format )
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: SetTextureMaps()
|
||||
// Desc: Changes the texture maps used during rendering of the room.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CAppForm::SetTextureMaps( const TCHAR* strTexture0, const TCHAR* strTexture1,
|
||||
const TCHAR* strTexture2 )
|
||||
{
|
||||
_tcscpy( g_strTexture0, strTexture0 );
|
||||
_tcscpy( g_strTexture1, strTexture1 );
|
||||
_tcscpy( g_strTexture2, strTexture2 );
|
||||
|
||||
g_bTexturesChanged = TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
68
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/resource.h
Normal file
68
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/resource.h
Normal file
@@ -0,0 +1,68 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by winmain.rc
|
||||
//
|
||||
#define IDI_MAIN_ICON 101
|
||||
#define IDR_MAINFRAME 101
|
||||
#define IDD_FORMVIEW 102
|
||||
#define IDR_MAIN_ACCEL 113
|
||||
#define IDD_SELECTDEVICE 144
|
||||
#define IDD_VIEWCODE 170
|
||||
#define IDC_DEVICE_COMBO 1000
|
||||
#define IDC_MODE_COMBO 1001
|
||||
#define IDC_ADAPTER_COMBO 1002
|
||||
#define IDC_FULLSCREENMODES_COMBO 1003
|
||||
#define IDC_MULTISAMPLE_COMBO 1005
|
||||
#define IDC_WINDOWED_CHECKBOX 1012
|
||||
#define IDC_FULLSCREEN_TEXT 1014
|
||||
#define IDC_WINDOW 1016
|
||||
#define IDC_FULLSCREEN 1018
|
||||
#define IDC_RENDERVIEW 1050
|
||||
#define IDC_VIEWCODEEDITBOX 1054
|
||||
#define IDC_VIEWFULLSCREEN 1059
|
||||
#define IDC_TEX0_NAME 1100
|
||||
#define IDC_SELECTTEX0 1101
|
||||
#define IDC_TEX1_NAME 1108
|
||||
#define IDC_SELECTTEX1 1109
|
||||
#define IDC_TEX2_NAME 1116
|
||||
#define IDC_SELECTTEX2 1117
|
||||
#define IDC_BLEND_FACTOR 1118
|
||||
#define IDC_PRESET_EFFECTS 1119
|
||||
#define IDC_DIFFUSE_COLOR 1120
|
||||
#define IDC_TEX0_COLOROP 1201
|
||||
#define IDC_TEX0_COLORARG1 1202
|
||||
#define IDC_TEX0_COLORARG2 1203
|
||||
#define IDC_TEX0_ALPHAOP 1204
|
||||
#define IDC_TEX0_ALPHAARG1 1205
|
||||
#define IDC_TEX0_ALPHAARG2 1206
|
||||
#define IDC_TEX1_COLOROP 1301
|
||||
#define IDC_TEX1_COLORARG1 1302
|
||||
#define IDC_TEX1_COLORARG2 1303
|
||||
#define IDC_TEX1_ALPHAOP 1304
|
||||
#define IDC_TEX1_ALPHAARG1 1305
|
||||
#define IDC_TEX1_ALPHAARG2 1306
|
||||
#define IDC_TEX2_COLOROP 1401
|
||||
#define IDC_TEX2_COLORARG1 1402
|
||||
#define IDC_TEX2_COLORARG2 1403
|
||||
#define IDC_TEX2_ALPHAOP 1404
|
||||
#define IDC_TEX2_ALPHAARG1 1405
|
||||
#define IDC_TEX2_ALPHAARG2 1406
|
||||
#define IDM_EXIT 40001
|
||||
#define IDM_CHANGEDEVICE 40010
|
||||
#define IDM_ALTENTER 40010
|
||||
#define IDM_TOGGLEFULLSCREEN 40011
|
||||
#define IDC_VIEWCODE 40011
|
||||
#define IDM_PAUSE 40018
|
||||
#define IDM_SINGLESTEP 40019
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_3D_CONTROLS 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 152
|
||||
#define _APS_NEXT_COMMAND_VALUE 40020
|
||||
#define _APS_NEXT_CONTROL_VALUE 1120
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,6 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// Gear.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
25
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/stdafx.h
Normal file
25
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/stdafx.h
Normal file
@@ -0,0 +1,25 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__F8D95047_DC20_11D0_9A2C_00C04FD7D17B__INCLUDED_)
|
||||
#define AFX_STDAFX_H__F8D95047_DC20_11D0_9A2C_00C04FD7D17B__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__F8D95047_DC20_11D0_9A2C_00C04FD7D17B__INCLUDED_)
|
||||
149
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/texargs.h
Normal file
149
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/texargs.h
Normal file
@@ -0,0 +1,149 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: TexArgs.h
|
||||
//
|
||||
// Desc: Header file to declare texture stage state arguments used for the app.
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifndef TEX_ARGS_H
|
||||
#define TEX_ARGS_H
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// String arrays for filling the form's combo boxes
|
||||
//-----------------------------------------------------------------------------
|
||||
TCHAR* g_astrPresetEffects[] =
|
||||
{
|
||||
_T("Modulate"), _T("Modulate Alpha"), _T("Add"), _T("Decal Alpha"),
|
||||
_T("Colored Light Map"), _T("Inverse Colored Light Map"),
|
||||
_T("Single Channel Light Map"), _T("Modulate and Late Add"),
|
||||
_T("Linear Blend using Texture Alpha"), _T("Linear Blend using Diffuse Alpha"),
|
||||
_T("Add with smooth saturation"), _T("Multitexture Subtract"),
|
||||
_T("Add Diffuse to light map then modulate"), _T("Detail Modulate"),
|
||||
_T("Detail Add"),
|
||||
NULL
|
||||
};
|
||||
|
||||
TCHAR* g_astrTextureOps[] =
|
||||
{
|
||||
// Basics
|
||||
_T("Disable"),
|
||||
_T("Select Arg 1"),
|
||||
_T("Select Arg 2"),
|
||||
|
||||
// Modulate
|
||||
_T("Modulate"),
|
||||
_T("Modulate 2x"),
|
||||
_T("Modulate 4x"),
|
||||
|
||||
// Add
|
||||
_T("Add"),
|
||||
_T("Add Signed"),
|
||||
_T("Add Signed 2x"),
|
||||
_T("Subtract"),
|
||||
_T("Add Smooth"),
|
||||
|
||||
// Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
|
||||
_T("Blend Diffuse"),
|
||||
_T("Blend Texture"),
|
||||
_T("Blend Factor"),
|
||||
|
||||
// Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
|
||||
_T("Blend Texture PM"),
|
||||
_T("Blend Current PM"),
|
||||
|
||||
// Specular mapping
|
||||
_T("Premodulate"),
|
||||
_T("Modulate Alpha Add Color"),
|
||||
_T("Modulate Color Add Alpha"),
|
||||
_T("Modulate Inv Alpha Add Color"),
|
||||
_T("Modulate Inv Color Add Alpha"),
|
||||
|
||||
// Bump mapping
|
||||
_T("Bump EnvMap"),
|
||||
_T("Bump EnvMap w/Luminance"),
|
||||
|
||||
// DotProduct4
|
||||
_T("DotProduct3"),
|
||||
|
||||
NULL
|
||||
};
|
||||
|
||||
TCHAR* g_astrTextureArgs1[] =
|
||||
{
|
||||
_T("Diffuse"), _T("Current"), _T("Texture"),
|
||||
_T("Diffuse Inv"), _T("Current Inv"), _T("Texture Inv"),
|
||||
_T("Tex w/Alpha"), NULL
|
||||
};
|
||||
|
||||
TCHAR* g_astrTextureArgs2[] =
|
||||
{
|
||||
_T("Diffuse"), _T("Current"), _T("Factor"),
|
||||
_T("Diffuse Inv"), _T("Current Inv"), _T("Factor Inv"),
|
||||
_T("Diffuse w/Alpha"), _T("Current w/Alpha"), _T("Factor w/Alpha"),
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// D3DTOP values corresponding to the strings above for the dropdown lists
|
||||
//-----------------------------------------------------------------------------
|
||||
WORD aTexOps[] =
|
||||
{
|
||||
NULL, D3DTOP_DISABLE, D3DTOP_SELECTARG1, D3DTOP_SELECTARG2,
|
||||
D3DTOP_MODULATE, D3DTOP_MODULATE2X, D3DTOP_MODULATE4X,
|
||||
D3DTOP_ADD, D3DTOP_ADDSIGNED, D3DTOP_ADDSIGNED2X, D3DTOP_SUBTRACT,
|
||||
D3DTOP_ADDSMOOTH, D3DTOP_BLENDDIFFUSEALPHA, D3DTOP_BLENDTEXTUREALPHA,
|
||||
D3DTOP_BLENDFACTORALPHA, D3DTOP_BLENDTEXTUREALPHAPM,
|
||||
D3DTOP_BLENDCURRENTALPHA, D3DTOP_PREMODULATE,
|
||||
D3DTOP_MODULATEALPHA_ADDCOLOR, D3DTOP_MODULATECOLOR_ADDALPHA,
|
||||
D3DTOP_MODULATEINVALPHA_ADDCOLOR, D3DTOP_MODULATEINVCOLOR_ADDALPHA,
|
||||
D3DTOP_BUMPENVMAP, D3DTOP_BUMPENVMAPLUMINANCE, D3DTOP_DOTPRODUCT3
|
||||
};
|
||||
|
||||
WORD aTexArgs1[] =
|
||||
{
|
||||
NULL, D3DTA_DIFFUSE, D3DTA_CURRENT, D3DTA_TEXTURE,
|
||||
D3DTA_DIFFUSE|D3DTA_COMPLEMENT, D3DTA_CURRENT|D3DTA_COMPLEMENT,
|
||||
D3DTA_TEXTURE|D3DTA_COMPLEMENT, D3DTA_TEXTURE|D3DTA_ALPHAREPLICATE
|
||||
};
|
||||
|
||||
WORD aTexArgs2[] =
|
||||
{
|
||||
NULL, D3DTA_DIFFUSE, D3DTA_CURRENT, D3DTA_TFACTOR,
|
||||
D3DTA_COMPLEMENT|D3DTA_DIFFUSE, D3DTA_COMPLEMENT|D3DTA_CURRENT,
|
||||
D3DTA_COMPLEMENT|D3DTA_TFACTOR,
|
||||
D3DTA_ALPHAREPLICATE|D3DTA_DIFFUSE, D3DTA_ALPHAREPLICATE|D3DTA_CURRENT,
|
||||
D3DTA_ALPHAREPLICATE|D3DTA_TFACTOR,
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Enumerated values to relate the combo box strings (listed above) with the
|
||||
// combo box indices.
|
||||
//-----------------------------------------------------------------------------
|
||||
enum _TEXOPS { toDISABLE, toSELECTARG1, toSELECTARG2,
|
||||
toMODULATE, toMODULATE2X, toMODULATE4X, toADD,
|
||||
toADDSIGNED, toADDSIGNED2X, toSUBTRACT,
|
||||
toADDSMOOTH, toBLENDDIFFUSE, toBLENDTEXTURE,
|
||||
toBLENDFACTOR };
|
||||
|
||||
enum _TEXARGS1 { ta1DIFFUSE, ta1CURRENT, ta1TEXTURE, ta1INVDIFFUSE,
|
||||
ta1INVCURRENT, ta1INVTEXTURE, ta1ALPHATEXTURE };
|
||||
|
||||
enum _TEXARGS2 { ta2DIFFUSE, ta2CURRENT, ta2FACTOR,
|
||||
ta2INVDIFFUSE, ta2INVCURRENT, ta2INVFACTOR,
|
||||
ta2ALPHADIFFUSE, ta2ALPHACURRENT, ta2ALPHAFACTOR };
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
251
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/winmain.rc
Normal file
251
Library/dxx8/samples/Multimedia/Direct3D/MFCTex/winmain.rc
Normal file
@@ -0,0 +1,251 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON DISCARDABLE "DirectX.ico"
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
IDR_MAIN_ACCEL ACCELERATORS DISCARDABLE
|
||||
BEGIN
|
||||
VK_ESCAPE, IDM_EXIT, VIRTKEY, NOINVERT
|
||||
VK_RETURN, IDM_PAUSE, VIRTKEY, NOINVERT
|
||||
VK_RETURN, IDM_ALTENTER, VIRTKEY, ALT, NOINVERT
|
||||
VK_SPACE, IDM_SINGLESTEP, VIRTKEY, NOINVERT
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_FORMVIEW DIALOGEX 0, 0, 416, 181
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Change &Device...",IDM_CHANGEDEVICE,10,160,62,15
|
||||
PUSHBUTTON "View Full&screen",IDC_VIEWFULLSCREEN,74,160,62,15
|
||||
CONTROL "",IDC_RENDERVIEW,"Static",SS_BLACKFRAME,5,35,135,115,
|
||||
WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
|
||||
PUSHBUTTON "View &code...",IDC_VIEWCODE,348,160,62,15
|
||||
EDITTEXT IDC_TEX0_NAME,201,30,49,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_SELECTTEX0,250,30,15,14
|
||||
EDITTEXT IDC_TEX1_NAME,270,30,50,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_SELECTTEX1,320,30,15,14
|
||||
EDITTEXT IDC_TEX2_NAME,340,30,50,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_SELECTTEX2,390,30,15,14
|
||||
LTEXT "Color Arg 1",IDC_STATIC,150,50,44,15,SS_CENTERIMAGE
|
||||
LTEXT "Color Op",IDC_STATIC,150,65,44,15,SS_CENTERIMAGE
|
||||
LTEXT "Color Arg 2",IDC_STATIC,150,80,44,16,SS_CENTERIMAGE
|
||||
LTEXT "Alpha Arg 1",IDC_STATIC,150,100,44,15,SS_CENTERIMAGE
|
||||
LTEXT "Alpha Op",IDC_STATIC,150,115,44,15,SS_CENTERIMAGE
|
||||
CTEXT "Stage 0",IDC_STATIC,201,10,64,15,SS_CENTERIMAGE
|
||||
CTEXT "Stage 1",IDC_STATIC,270,10,65,15,SS_CENTERIMAGE
|
||||
CTEXT "Stage 2",IDC_STATIC,340,10,65,15,SS_CENTERIMAGE
|
||||
EDITTEXT IDC_BLEND_FACTOR,200,160,40,14,ES_AUTOHSCROLL
|
||||
COMBOBOX IDC_PRESET_EFFECTS,10,10,125,70,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Options",IDC_STATIC,145,150,270,30
|
||||
GROUPBOX "Texture Stages",IDC_STATIC,145,0,270,150
|
||||
LTEXT "Alpha Arg 2",IDC_STATIC,150,130,44,15,SS_CENTERIMAGE
|
||||
LTEXT "Texture File",IDC_STATIC,150,30,44,15,SS_CENTERIMAGE
|
||||
LTEXT "BlendFactor",IDC_STATIC,150,160,45,15,SS_CENTERIMAGE
|
||||
GROUPBOX "Preset Texture Stage Effects",IDC_STATIC,5,0,135,30
|
||||
GROUPBOX "Device Options",IDC_STATIC,5,150,135,30
|
||||
COMBOBOX IDC_TEX0_COLORARG2,200,79,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX0_COLOROP,200,65,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX0_COLORARG1,200,50,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX0_ALPHAARG2,200,129,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX0_ALPHAOP,200,116,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX0_ALPHAARG1,200,100,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_COLORARG2,270,79,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_COLOROP,270,65,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_COLORARG1,270,50,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_ALPHAARG2,270,129,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_ALPHAOP,270,116,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX1_ALPHAARG1,270,100,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_COLORARG2,340,79,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_COLOROP,340,65,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_COLORARG1,340,50,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_ALPHAARG2,340,129,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_ALPHAOP,340,116,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_TEX2_ALPHAARG1,340,100,65,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
EDITTEXT IDC_DIFFUSE_COLOR,300,160,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Diffuse Color",IDC_STATIC,250,160,45,15,SS_CENTERIMAGE
|
||||
END
|
||||
|
||||
IDD_VIEWCODE DIALOG DISCARDABLE 0, 0, 366, 140
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Direct3D Texture Stage Code"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,309,119,50,14
|
||||
EDITTEXT IDC_VIEWCODEEDITBOX,5,5,354,107,ES_MULTILINE |
|
||||
WS_VSCROLL
|
||||
END
|
||||
|
||||
IDD_SELECTDEVICE DIALOG DISCARDABLE 0, 0, 267, 138
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Select Device"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
GROUPBOX "Rendering device",IDC_STATIC,5,5,200,45
|
||||
LTEXT "&Adapter:",IDC_STATIC,22,17,65,10,SS_CENTERIMAGE
|
||||
COMBOBOX IDC_ADAPTER_COMBO,90,15,105,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "&Device:",IDC_STATIC,22,32,65,10,SS_CENTERIMAGE
|
||||
COMBOBOX IDC_DEVICE_COMBO,90,30,105,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Rendering mode",IDC_STATIC,5,52,200,45
|
||||
CONTROL "Use desktop &window",IDC_WINDOW,"Button",
|
||||
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,10,62,85,15
|
||||
CONTROL "&Fullscreen mode:",IDC_FULLSCREEN,"Button",
|
||||
BS_AUTORADIOBUTTON,10,77,75,15
|
||||
COMBOBOX IDC_FULLSCREENMODES_COMBO,90,77,105,204,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_GROUP | WS_TABSTOP
|
||||
GROUPBOX "Multisample",IDC_STATIC,5,101,200,28
|
||||
LTEXT "&Multisample Type:",IDC_STATIC,22,113,62,10,
|
||||
SS_CENTERIMAGE
|
||||
COMBOBOX IDC_MULTISAMPLE_COMBO,90,111,105,100,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
DEFPUSHBUTTON "OK",IDOK,210,10,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,210,30,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_FORMVIEW, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 408
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 176
|
||||
END
|
||||
|
||||
IDD_VIEWCODE, DIALOG
|
||||
BEGIN
|
||||
RIGHTMARGIN, 359
|
||||
TOPMARGIN, 7
|
||||
END
|
||||
|
||||
IDD_SELECTDEVICE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 259
|
||||
TOPMARGIN, 7
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_MAINFRAME MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "Change &device...", IDM_CHANGEDEVICE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", ID_APP_EXIT
|
||||
END
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
Reference in New Issue
Block a user