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:
@@ -0,0 +1,383 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: DShowTextures.cpp
|
||||
//
|
||||
// Desc: DirectShow sample code - adds support for DirectShow videos playing
|
||||
// on a DirectX 8.0 texture surface. Turns the D3D texture tutorial into
|
||||
// a recreation of the VideoTex sample from previous versions of DirectX.
|
||||
//
|
||||
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "Textures.h"
|
||||
#include "DShowTextures.h"
|
||||
#include "DXUtil.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global Constants
|
||||
//-----------------------------------------------------------------------------
|
||||
#define SOURCE_FILE TEXT("skiing.avi")
|
||||
|
||||
// An application can advertise the existence of its filter graph
|
||||
// by registering the graph with a global Running Object Table (ROT).
|
||||
// The GraphEdit application can detect and remotely view the running
|
||||
// filter graph, allowing you to 'spy' on the graph with GraphEdit.
|
||||
//
|
||||
// To enable registration in this sample, define REGISTER_FILTERGRAPH.
|
||||
//
|
||||
#define REGISTER_FILTERGRAPH
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global DirectShow pointers
|
||||
//-----------------------------------------------------------------------------
|
||||
CComPtr<IGraphBuilder> g_pGB; // GraphBuilder
|
||||
CComPtr<IMediaControl> g_pMC; // Media Control
|
||||
CComPtr<IMediaPosition> g_pMP; // Media Postion
|
||||
CComPtr<IMediaEvent> g_pME; // Media Event
|
||||
|
||||
D3DFORMAT g_TextureFormat; // Texture format
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// InitDShowTextureRenderer : Create DirectShow filter graph and run the graph
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT InitDShowTextureRenderer(LPDIRECT3DTEXTURE8 pTexture)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
CComPtr<IBaseFilter> pFTR; // Texture Renderer Filter
|
||||
CComPtr<IPin> pFTRPinIn; // Texture Renderer Input Pin
|
||||
CComPtr<IBaseFilter> pFSrc; // Source Filter
|
||||
CComPtr<IPin> pFSrcPinOut; // Source Filter Output Pin
|
||||
CTextureRenderer *pCTR; // DShow Texture renderer
|
||||
|
||||
// Create the filter graph
|
||||
if (FAILED(g_pGB.CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC)))
|
||||
return E_FAIL;
|
||||
|
||||
#ifdef REGISTER_FILTERGRAPH
|
||||
// Register the graph in the Running Object Table (for debug purposes)
|
||||
AddToROT(g_pGB);
|
||||
#endif
|
||||
|
||||
// Create the Texture Renderer object
|
||||
pCTR = new CTextureRenderer(NULL, &hr);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Msg(TEXT("Could not create texture renderer object! hr=0x%x"), hr);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
// Get a pointer to the IBaseFilter on the TextureRenderer, add it to graph
|
||||
pFTR = pCTR;
|
||||
if (FAILED(hr = g_pGB->AddFilter(pFTR, L"TEXTURERENDERER")))
|
||||
{
|
||||
Msg(TEXT("Could not add renderer filter to graph! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Determine the file to load based on DirectX Media path (from SDK)
|
||||
// Use a helper function included in DXUtils.cpp
|
||||
TCHAR strFileName[MAX_PATH];
|
||||
WCHAR wFileName[MAX_PATH];
|
||||
lstrcpy( strFileName, DXUtil_GetDXSDKMediaPath() );
|
||||
lstrcat( strFileName, SOURCE_FILE );
|
||||
|
||||
#ifndef UNICODE
|
||||
MultiByteToWideChar(CP_ACP, 0, strFileName, -1, wFileName, MAX_PATH);
|
||||
#else
|
||||
lstrcpy(wFileName, strFileName);
|
||||
#endif
|
||||
|
||||
// Add the source filter
|
||||
if (FAILED(hr = g_pGB->AddSourceFilter (wFileName, L"SOURCE", &pFSrc)))
|
||||
{
|
||||
Msg(TEXT("Could not create source filter to graph! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Find the source's output pin and the renderer's input pin
|
||||
if (FAILED(hr = pFTR->FindPin(L"In", &pFTRPinIn)))
|
||||
{
|
||||
Msg(TEXT("Could not find input pin! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
if (FAILED(hr = pFSrc->FindPin(L"Output", &pFSrcPinOut)))
|
||||
{
|
||||
Msg(TEXT("Could not find output pin! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Connect these two filters
|
||||
if (FAILED(hr = g_pGB->Connect(pFSrcPinOut, pFTRPinIn)))
|
||||
{
|
||||
Msg(TEXT("Could not connect pins! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Get the graph's media control, event & position interfaces
|
||||
g_pGB.QueryInterface(&g_pMC);
|
||||
g_pGB.QueryInterface(&g_pMP);
|
||||
g_pGB.QueryInterface(&g_pME);
|
||||
|
||||
// Start the graph running;
|
||||
if (FAILED(hr = g_pMC->Run()))
|
||||
{
|
||||
Msg(TEXT("Could not run the DirectShow graph! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CheckMovieStatus: If the movie has ended, rewind to beginning
|
||||
//-----------------------------------------------------------------------------
|
||||
void CheckMovieStatus(void)
|
||||
{
|
||||
long lEventCode;
|
||||
long lParam1;
|
||||
long lParam2;
|
||||
HRESULT hr;
|
||||
|
||||
// Check for completion events
|
||||
hr = g_pME->GetEvent(&lEventCode, (LONG_PTR *) &lParam1, (LONG_PTR *) &lParam2, 0);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
if (EC_COMPLETE == lEventCode)
|
||||
{
|
||||
hr = g_pMP->put_CurrentPosition(0);
|
||||
}
|
||||
|
||||
// Free any memory associated with this event
|
||||
hr = g_pME->FreeEventParams(lEventCode, lParam1, lParam2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CleanupDShow
|
||||
//-----------------------------------------------------------------------------
|
||||
void CleanupDShow(void)
|
||||
{
|
||||
#ifdef REGISTER_FILTERGRAPH
|
||||
// Pull graph from Running Object Table (Debug)
|
||||
RemoveFromROT();
|
||||
#endif
|
||||
|
||||
// Shut down the graph
|
||||
if (!(!g_pMC)) g_pMC->Stop();
|
||||
if (!(!g_pMC)) g_pMC.Release();
|
||||
if (!(!g_pME)) g_pME.Release();
|
||||
if (!(!g_pMP)) g_pMP.Release();
|
||||
if (!(!g_pGB)) g_pGB.Release();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CTextureRenderer constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CTextureRenderer::CTextureRenderer( LPUNKNOWN pUnk, HRESULT *phr )
|
||||
: CBaseVideoRenderer(__uuidof(CLSID_TextureRenderer),
|
||||
NAME("Texture Renderer"), pUnk, phr)
|
||||
{
|
||||
// Store and AddRef the texture for our use.
|
||||
*phr = S_OK;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CTextureRenderer destructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CTextureRenderer::~CTextureRenderer()
|
||||
{
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CheckMediaType: This method forces the graph to give us an R8G8B8 video
|
||||
// type, making our copy to texture memory trivial.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CTextureRenderer::CheckMediaType(const CMediaType *pmt)
|
||||
{
|
||||
HRESULT hr = E_FAIL;
|
||||
VIDEOINFO *pvi;
|
||||
|
||||
// Reject the connection if this is not a video type
|
||||
if( *pmt->FormatType() != FORMAT_VideoInfo ) {
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
// Only accept RGB24
|
||||
pvi = (VIDEOINFO *)pmt->Format();
|
||||
if(IsEqualGUID( *pmt->Type(), MEDIATYPE_Video) &&
|
||||
IsEqualGUID( *pmt->Subtype(), MEDIASUBTYPE_RGB24))
|
||||
{
|
||||
hr = S_OK;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// SetMediaType: Graph connection has been made.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CTextureRenderer::SetMediaType(const CMediaType *pmt)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// Retrive the size of this media type
|
||||
VIDEOINFO *pviBmp; // Bitmap info header
|
||||
pviBmp = (VIDEOINFO *)pmt->Format();
|
||||
m_lVidWidth = pviBmp->bmiHeader.biWidth;
|
||||
m_lVidHeight = abs(pviBmp->bmiHeader.biHeight);
|
||||
m_lVidPitch = (m_lVidWidth * 3 + 3) & ~(3); // We are forcing RGB24
|
||||
|
||||
// Create the texture that maps to this media type
|
||||
if( FAILED( hr = D3DXCreateTexture(g_pd3dDevice,
|
||||
m_lVidWidth, m_lVidHeight,
|
||||
1, 0,
|
||||
D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &g_pTexture ) ) )
|
||||
{
|
||||
Msg(TEXT("Could not create the D3DX texture! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// D3DXCreateTexture can silently change the parameters on us
|
||||
D3DSURFACE_DESC ddsd;
|
||||
if ( FAILED( hr = g_pTexture->GetLevelDesc( 0, &ddsd ) ) ) {
|
||||
Msg(TEXT("Could not get level Description of D3DX texture! hr = 0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
g_TextureFormat = ddsd.Format;
|
||||
if (g_TextureFormat != D3DFMT_A8R8G8B8 &&
|
||||
g_TextureFormat != D3DFMT_A1R5G5B5) {
|
||||
Msg(TEXT("Texture is format we can't handle! Format = 0x%x"), g_TextureFormat);
|
||||
return VFW_E_TYPE_NOT_ACCEPTED;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// DoRenderSample: A sample has been delivered. Copy it to the texture.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CTextureRenderer::DoRenderSample( IMediaSample * pSample )
|
||||
{
|
||||
BYTE *pBmpBuffer, *pTxtBuffer; // Bitmap buffer, texture buffer
|
||||
LONG lTxtPitch; // Pitch of bitmap, texture
|
||||
|
||||
// Get the video bitmap buffer
|
||||
pSample->GetPointer( &pBmpBuffer );
|
||||
|
||||
// Lock the Texture
|
||||
D3DLOCKED_RECT d3dlr;
|
||||
if (FAILED(g_pTexture->LockRect(0, &d3dlr, 0, 0)))
|
||||
return E_FAIL;
|
||||
|
||||
// Get the texture buffer & pitch
|
||||
pTxtBuffer = static_cast<byte *>(d3dlr.pBits);
|
||||
lTxtPitch = d3dlr.Pitch;
|
||||
|
||||
// Copy the bits
|
||||
// OPTIMIZATION OPPORTUNITY: Use a video and texture
|
||||
// format that allows a simpler copy than this one.
|
||||
if (g_TextureFormat == D3DFMT_A8R8G8B8) {
|
||||
for(int y = 0; y < m_lVidHeight; y++ ) {
|
||||
BYTE *pBmpBufferOld = pBmpBuffer;
|
||||
BYTE *pTxtBufferOld = pTxtBuffer;
|
||||
for (int x = 0; x < m_lVidWidth; x++) {
|
||||
pTxtBuffer[0] = pBmpBuffer[0];
|
||||
pTxtBuffer[1] = pBmpBuffer[1];
|
||||
pTxtBuffer[2] = pBmpBuffer[2];
|
||||
pTxtBuffer[3] = 0xff;
|
||||
pTxtBuffer += 4;
|
||||
pBmpBuffer += 3;
|
||||
}
|
||||
pBmpBuffer = pBmpBufferOld + m_lVidPitch;
|
||||
pTxtBuffer = pTxtBufferOld + lTxtPitch;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_TextureFormat == D3DFMT_A1R5G5B5) {
|
||||
for(int y = 0; y < m_lVidHeight; y++ ) {
|
||||
BYTE *pBmpBufferOld = pBmpBuffer;
|
||||
BYTE *pTxtBufferOld = pTxtBuffer;
|
||||
for (int x = 0; x < m_lVidWidth; x++) {
|
||||
*(WORD *)pTxtBuffer = (WORD)
|
||||
(0x8000 +
|
||||
((pBmpBuffer[2] & 0xF8) << 7) +
|
||||
((pBmpBuffer[1] & 0xF8) << 2) +
|
||||
(pBmpBuffer[0] >> 3));
|
||||
pTxtBuffer += 2;
|
||||
pBmpBuffer += 3;
|
||||
}
|
||||
pBmpBuffer = pBmpBufferOld + m_lVidPitch;
|
||||
pTxtBuffer = pTxtBufferOld + lTxtPitch;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Unlock the Texture
|
||||
if (FAILED(g_pTexture->UnlockRect(0)))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
#ifdef REGISTER_FILTERGRAPH
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Running Object Table functions: Used to debug. By registering the graph
|
||||
// in the running object table, GraphEdit is able to connect to the running
|
||||
// graph. This code should be removed before the application is shipped in
|
||||
// order to avoid third parties from spying on your graph.
|
||||
//-----------------------------------------------------------------------------
|
||||
DWORD dwROTReg = 0xfedcba98;
|
||||
|
||||
HRESULT AddToROT(IUnknown *pUnkGraph)
|
||||
{
|
||||
IMoniker * pmk;
|
||||
IRunningObjectTable *pirot;
|
||||
if (FAILED(GetRunningObjectTable(0, &pirot))) {
|
||||
return E_FAIL;
|
||||
}
|
||||
WCHAR wsz[256];
|
||||
wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR) 0, GetCurrentProcessId());
|
||||
HRESULT hr = CreateItemMoniker(L"!", wsz, &pmk);
|
||||
if (SUCCEEDED(hr)) {
|
||||
hr = pirot->Register(0, pUnkGraph, pmk, &dwROTReg);
|
||||
pmk->Release();
|
||||
}
|
||||
pirot->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
void RemoveFromROT(void)
|
||||
{
|
||||
IRunningObjectTable *pirot;
|
||||
if (SUCCEEDED(GetRunningObjectTable(0, &pirot))) {
|
||||
pirot->Revoke(dwROTReg);
|
||||
pirot->Release();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Msg: Display an error message box if needed
|
||||
//-----------------------------------------------------------------------------
|
||||
void Msg(TCHAR *szFormat, ...)
|
||||
{
|
||||
TCHAR szBuffer[512];
|
||||
|
||||
va_list pArgs;
|
||||
va_start(pArgs, szFormat);
|
||||
_vstprintf(szBuffer, szFormat, pArgs);
|
||||
va_end(pArgs);
|
||||
|
||||
MessageBox(NULL, szBuffer, TEXT("DirectShow Texture3D Sample"),
|
||||
MB_OK | MB_ICONERROR);
|
||||
}
|
||||
@@ -0,0 +1,419 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: Textures.cpp
|
||||
//
|
||||
// Desc: DirectShow sample code - uses the Direct3D Textures Tutorial05 as
|
||||
// a base to create an application that uses DirectShow to draw a video
|
||||
// on a DirectX 8.0 Texture surface.
|
||||
|
||||
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include "textures.h"
|
||||
#include "resource.h"
|
||||
|
||||
#pragma warning( disable : 4100 4238)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global variables
|
||||
//-----------------------------------------------------------------------------
|
||||
LPDIRECT3D8 g_pD3D = NULL; // Used to create the D3DDevice
|
||||
LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; // Our rendering device
|
||||
LPDIRECT3DVERTEXBUFFER8 g_pVB = NULL; // Buffer to hold vertices
|
||||
LPDIRECT3DTEXTURE8 g_pTexture = NULL; // Our texture
|
||||
HINSTANCE hInstance = 0;
|
||||
|
||||
// A structure for our custom vertex type. We added texture coordinates
|
||||
struct CUSTOMVERTEX
|
||||
{
|
||||
D3DXVECTOR3 position; // The position
|
||||
D3DCOLOR color; // The color
|
||||
FLOAT tu, tv; // The texture coordinates
|
||||
};
|
||||
|
||||
// Our custom FVF, which describes our custom vertex structure
|
||||
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
|
||||
#define CLASSNAME TEXT("DShow Texture3D Sample")
|
||||
|
||||
// Function prototypes
|
||||
void AddAboutMenuItem(HWND hWnd);
|
||||
LRESULT CALLBACK AboutDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InitD3D()
|
||||
// Desc: Initializes Direct3D
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT InitD3D( HWND hWnd )
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// Create the D3D object.
|
||||
if( NULL == ( g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) )
|
||||
return E_FAIL;
|
||||
|
||||
// Get the current desktop display mode, so we can set up a back
|
||||
// buffer of the same format
|
||||
D3DDISPLAYMODE d3ddm;
|
||||
if ( FAILED( hr = g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
|
||||
{
|
||||
Msg(TEXT("Could not read adapter display mode! hr=0x%x"), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Set up the structure used to create the D3DDevice. Since we are now
|
||||
// using more complex geometry, we will create a device with a zbuffer.
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
ZeroMemory( &d3dpp, sizeof(d3dpp) );
|
||||
d3dpp.Windowed = TRUE;
|
||||
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC;
|
||||
d3dpp.BackBufferFormat = d3ddm.Format;
|
||||
d3dpp.EnableAutoDepthStencil = TRUE;
|
||||
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
|
||||
|
||||
// Create the D3DDevice
|
||||
hr = g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
|
||||
D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED,
|
||||
&d3dpp, &g_pd3dDevice );
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Msg(TEXT("Could not create the D3D device! hr=0x%x\r\n\r\n")
|
||||
TEXT("This sample is attempting to create a buffer that might not\r\n")
|
||||
TEXT("be supported by your video card in its current mode.\r\n\r\n")
|
||||
TEXT("You may want to reduce your screen resolution or bit depth\r\n")
|
||||
TEXT("and try to run this sample again."), hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Turn off culling
|
||||
hr = g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
|
||||
|
||||
// Turn off D3D lighting
|
||||
hr = g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
|
||||
|
||||
// Turn on the zbuffer
|
||||
hr = g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
|
||||
|
||||
// Set texture states
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
|
||||
|
||||
// Add filtering
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR );
|
||||
hr = g_pd3dDevice->SetTextureStageState( 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR );
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InitGeometry()
|
||||
// Desc: Create the textures and vertex buffers
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT InitGeometry()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// DShow: Set up filter graph with our custom renderer.
|
||||
if( FAILED( InitDShowTextureRenderer(g_pTexture ) ) )
|
||||
return E_FAIL;
|
||||
|
||||
// Create the vertex buffer.
|
||||
if( FAILED( hr = g_pd3dDevice->CreateVertexBuffer( 50*2*sizeof(CUSTOMVERTEX),
|
||||
0, D3DFVF_CUSTOMVERTEX,
|
||||
D3DPOOL_DEFAULT, &g_pVB ) ) )
|
||||
{
|
||||
Msg(TEXT("Could not create a vertex buffer! hr=0x%x"), hr);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
// Fill the vertex buffer. We are setting the tu and tv texture
|
||||
// coordinates, which range from 0.0 to 1.0
|
||||
CUSTOMVERTEX* pVertices;
|
||||
if ( FAILED( hr = g_pVB->Lock( 0, 0, (BYTE**)&pVertices, 0 ) ) )
|
||||
{
|
||||
Msg(TEXT("Could not lock the vertex buffer! hr=0x%x"), hr);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
for( DWORD i=0; i<50; i++ )
|
||||
{
|
||||
FLOAT theta = (2*D3DX_PI*i)/(50-1);
|
||||
|
||||
pVertices[2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0f, cosf(theta) );
|
||||
pVertices[2*i+0].color = 0xffffffff;
|
||||
pVertices[2*i+0].tu = ((FLOAT)i)/(50-1);
|
||||
pVertices[2*i+0].tv = 1.0f;
|
||||
|
||||
pVertices[2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0f, cosf(theta) );
|
||||
pVertices[2*i+1].color = 0xff808080;
|
||||
pVertices[2*i+1].tu = ((FLOAT)i)/(50-1);
|
||||
pVertices[2*i+1].tv = 0.0f;
|
||||
}
|
||||
|
||||
g_pVB->Unlock();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Cleanup()
|
||||
// Desc: Releases all previously initialized objects
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID Cleanup()
|
||||
{
|
||||
CleanupDShow();
|
||||
|
||||
if( g_pTexture != NULL )
|
||||
g_pTexture->Release();
|
||||
|
||||
if( g_pVB != NULL )
|
||||
g_pVB->Release();
|
||||
|
||||
if( g_pd3dDevice != NULL )
|
||||
g_pd3dDevice->Release();
|
||||
|
||||
if( g_pD3D != NULL )
|
||||
g_pD3D->Release();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: SetupMatrices()
|
||||
// Desc: Sets up the world, view, and projection transform matrices.
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID SetupMatrices()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// For our world matrix, we will just leave it as the identity
|
||||
D3DXMATRIX matWorld;
|
||||
D3DXMatrixIdentity( &matWorld );
|
||||
D3DXMatrixRotationX( &matWorld, timeGetTime()/2000.0f );
|
||||
hr = g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Msg(TEXT("Could not set D3DTS_WORLD transform! hr=0x%x"), hr);
|
||||
}
|
||||
|
||||
// Set up our view matrix. A view matrix can be defined given an eye point,
|
||||
// a point to lookat, and a direction for which way is up. Here, we set the
|
||||
// eye five units back along the z-axis and up three units, look at the
|
||||
// origin, and define "up" to be in the y-direction.
|
||||
D3DXMATRIX matView;
|
||||
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3( 0.0f, 3.0f,-5.0f ),
|
||||
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f ),
|
||||
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );
|
||||
hr = g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Msg(TEXT("Could not set D3DTS_VIEW transform! hr=0x%x"), hr);
|
||||
}
|
||||
|
||||
// For the projection matrix, we set up a perspective transform (which
|
||||
// transforms geometry from 3D view space to 2D viewport space, with
|
||||
// a perspective divide making objects smaller in the distance). To build
|
||||
// a perpsective transform, we need the field of view (1/4 pi is common),
|
||||
// the aspect ratio, and the near and far clipping planes (which define at
|
||||
// what distances geometry should be no longer be rendered).
|
||||
D3DXMATRIX matProj;
|
||||
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
|
||||
hr = g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
|
||||
if (FAILED(hr))
|
||||
{
|
||||
Msg(TEXT("Could not set D3DTS_PROJECTION transform! hr=0x%x"), hr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Render()
|
||||
// Desc: Draws the scene
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID Render()
|
||||
{
|
||||
// Clear the backbuffer and the zbuffer
|
||||
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
|
||||
D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
|
||||
|
||||
// Begin the scene
|
||||
g_pd3dDevice->BeginScene();
|
||||
|
||||
// Setup the world, view, and projection matrices
|
||||
SetupMatrices();
|
||||
|
||||
// Setup our texture. Using textures introduces the texture stage states,
|
||||
// which govern how textures get blended together (in the case of multiple
|
||||
// textures) and lighting information. In this case, we are modulating
|
||||
// (blending) our texture with the diffuse color of the vertices.
|
||||
g_pd3dDevice->SetTexture( 0, g_pTexture );
|
||||
|
||||
// Render the vertex buffer contents
|
||||
g_pd3dDevice->SetStreamSource( 0, g_pVB, sizeof(CUSTOMVERTEX) );
|
||||
g_pd3dDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX );
|
||||
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2*50-2 );
|
||||
|
||||
// End the scene
|
||||
g_pd3dDevice->EndScene();
|
||||
|
||||
// Present the backbuffer contents to the display
|
||||
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
|
||||
|
||||
// Check to see if we need to restart the movie
|
||||
CheckMovieStatus();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: MsgProc()
|
||||
// Desc: The window's message handler
|
||||
//-----------------------------------------------------------------------------
|
||||
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch( msg )
|
||||
{
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage( 0 );
|
||||
return 0;
|
||||
|
||||
case WM_KEYUP:
|
||||
{
|
||||
// Close the app if the ESC key is pressed
|
||||
if (wParam == VK_ESCAPE)
|
||||
PostMessage(hWnd, WM_CLOSE, 0, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SYSCOMMAND:
|
||||
{
|
||||
switch (wParam)
|
||||
{
|
||||
case ID_HELP_ABOUT:
|
||||
DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd,
|
||||
(DLGPROC) AboutDlgProc);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return DefWindowProc( hWnd, msg, wParam, lParam );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: AboutDlgProc()
|
||||
// Desc: Message handler for About box
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LRESULT CALLBACK AboutDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
if (wParam == IDOK)
|
||||
{
|
||||
EndDialog(hWnd, TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: AddAboutMenuItem()
|
||||
// Desc: Adds a menu item to the end of the app's system menu
|
||||
//-----------------------------------------------------------------------------
|
||||
void AddAboutMenuItem(HWND hWnd)
|
||||
{
|
||||
// Add About box menu item
|
||||
HMENU hwndMain = GetSystemMenu(hWnd, FALSE);
|
||||
|
||||
// Add separator
|
||||
BOOL rc = AppendMenu(hwndMain, MF_SEPARATOR, 0, NULL);
|
||||
|
||||
// Add menu item
|
||||
rc = AppendMenu(hwndMain, MF_STRING | MF_ENABLED,
|
||||
ID_HELP_ABOUT,
|
||||
TEXT("About Texture3D...\0"));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: WinMain()
|
||||
// Desc: The application's entry point
|
||||
//-----------------------------------------------------------------------------
|
||||
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, INT nCmdShow)
|
||||
{
|
||||
// Initialize COM
|
||||
CoInitialize (NULL);
|
||||
|
||||
// Register the window class
|
||||
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
|
||||
GetModuleHandle(NULL),
|
||||
LoadIcon(hInst, MAKEINTRESOURCE(IDI_TEXTURES)),
|
||||
NULL, NULL, NULL,
|
||||
CLASSNAME, NULL };
|
||||
RegisterClassEx( &wc );
|
||||
hInstance = hInst;
|
||||
|
||||
// Create the application's window
|
||||
HWND hWnd = CreateWindow( CLASSNAME, TEXT("DShow Texture3D Sample"),
|
||||
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
|
||||
GetDesktopWindow(), NULL, wc.hInstance, NULL );
|
||||
|
||||
// Add a menu item to the app's system menu
|
||||
AddAboutMenuItem(hWnd);
|
||||
|
||||
// Initialize Direct3D
|
||||
if( SUCCEEDED( InitD3D( hWnd ) ) )
|
||||
{
|
||||
// Create the scene geometry
|
||||
if( SUCCEEDED( InitGeometry() ) )
|
||||
{
|
||||
// Show the window
|
||||
ShowWindow( hWnd, SW_SHOWDEFAULT );
|
||||
UpdateWindow( hWnd );
|
||||
|
||||
// Enter the message loop
|
||||
MSG msg;
|
||||
ZeroMemory( &msg, sizeof(msg) );
|
||||
while( msg.message!=WM_QUIT )
|
||||
{
|
||||
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
|
||||
{
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
}
|
||||
else
|
||||
{
|
||||
Render();
|
||||
|
||||
// We're not attempting to achieve a fast D3D frame rate
|
||||
// in this sample, so let's just sleep for a while to
|
||||
// reduce CPU utilization. Otherwise, this app will use
|
||||
// as much CPU horsepower as possible, since the PeekMessage()
|
||||
// loop will run until the user closes the application.
|
||||
Sleep(25);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up everything and exit the app
|
||||
Cleanup();
|
||||
UnregisterClass( CLASSNAME, wc.hInstance );
|
||||
CoUninitialize();
|
||||
return 0L;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,39 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: DShowTextures.h
|
||||
//
|
||||
// Desc: DirectShow sample code - adds support for DirectShow videos playing
|
||||
// on a DirectX 8.0 texture surface. Turns the D3D texture tutorial into
|
||||
// a recreation of the VideoTex sample from previous versions of DirectX.
|
||||
//
|
||||
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include <streams.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Define GUID for Texture Renderer
|
||||
// {71771540-2017-11cf-AE26-0020AFD79767}
|
||||
//-----------------------------------------------------------------------------
|
||||
struct __declspec(uuid("{71771540-2017-11cf-ae26-0020afd79767}")) CLSID_TextureRenderer;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CTextureRenderer Class Declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class CTextureRenderer : public CBaseVideoRenderer
|
||||
{
|
||||
public:
|
||||
CTextureRenderer(LPUNKNOWN pUnk,HRESULT *phr);
|
||||
~CTextureRenderer();
|
||||
|
||||
public:
|
||||
HRESULT CheckMediaType(const CMediaType *pmt ); // Format acceptable?
|
||||
HRESULT SetMediaType(const CMediaType *pmt ); // Video format notification
|
||||
HRESULT DoRenderSample(IMediaSample *pMediaSample); // New video sample
|
||||
|
||||
LONG m_lVidWidth; // Video width
|
||||
LONG m_lVidHeight; // Video Height
|
||||
LONG m_lVidPitch; // Video Pitch
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: DXUtil.cpp
|
||||
//
|
||||
// Desc: Shortcut macros and functions for using DX objects
|
||||
//
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved
|
||||
//-----------------------------------------------------------------------------
|
||||
#define STRICT
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#include <tchar.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include "DXUtil.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DXUtil_GetDXSDKMediaPath()
|
||||
// Desc: Returns the DirectX SDK media path
|
||||
//-----------------------------------------------------------------------------
|
||||
const TCHAR* DXUtil_GetDXSDKMediaPath()
|
||||
{
|
||||
static TCHAR strNull[2] = _T("");
|
||||
static TCHAR strPath[MAX_PATH];
|
||||
DWORD dwType;
|
||||
DWORD dwSize = MAX_PATH;
|
||||
HKEY hKey;
|
||||
|
||||
// Open the appropriate registry key
|
||||
LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
|
||||
_T("Software\\Microsoft\\DirectX SDK"),
|
||||
0, KEY_READ, &hKey );
|
||||
if( ERROR_SUCCESS != lResult )
|
||||
return strNull;
|
||||
|
||||
lResult = RegQueryValueEx( hKey, _T("DX81SDK Samples Path"), NULL,
|
||||
&dwType, (BYTE*)strPath, &dwSize );
|
||||
RegCloseKey( hKey );
|
||||
|
||||
if( ERROR_SUCCESS != lResult )
|
||||
return strNull;
|
||||
|
||||
_tcscat( strPath, _T("\\Media\\") );
|
||||
|
||||
return strPath;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DXUtil_FindMediaFile()
|
||||
// Desc: Returns a valid path to a DXSDK media file
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT DXUtil_FindMediaFile( TCHAR* strPath, TCHAR* strFilename )
|
||||
{
|
||||
HANDLE file;
|
||||
|
||||
if( NULL==strFilename || NULL==strPath )
|
||||
return E_INVALIDARG;
|
||||
|
||||
// Check if the file exists in the current directory
|
||||
_tcscpy( strPath, strFilename );
|
||||
|
||||
file = CreateFile( strPath, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, 0, NULL );
|
||||
if( INVALID_HANDLE_VALUE != file )
|
||||
{
|
||||
CloseHandle( file );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// Check if the file exists in the current directory
|
||||
_stprintf( strPath, _T("%s%s"), DXUtil_GetDXSDKMediaPath(), strFilename );
|
||||
|
||||
file = CreateFile( strPath, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, 0, NULL );
|
||||
if( INVALID_HANDLE_VALUE != file )
|
||||
{
|
||||
CloseHandle( file );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// On failure, just return the file as the path
|
||||
_tcscpy( strPath, strFilename );
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: DXUtil.h
|
||||
//
|
||||
// Desc: DirectShow sample code - helper functions and typing shortcuts for
|
||||
// DirectX programming.
|
||||
//
|
||||
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef DXUTIL_H
|
||||
#define DXUTIL_H
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Miscellaneous helper functions
|
||||
//-----------------------------------------------------------------------------
|
||||
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
|
||||
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } }
|
||||
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DXUtil_GetDXSDKMediaPath() and DXUtil_FindMediaFile()
|
||||
// Desc: Returns the DirectX SDK path, as stored in the system registry
|
||||
// during the SDK install.
|
||||
//-----------------------------------------------------------------------------
|
||||
const TCHAR* DXUtil_GetDXSDKMediaPath();
|
||||
HRESULT DXUtil_FindMediaFile( TCHAR* strPath, TCHAR* strFilename );
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DXUtil_Read*RegKey() and DXUtil_Write*RegKey()
|
||||
// Desc: Helper functions to read/write a string registry key
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT DXUtil_WriteStringRegKey( HKEY hKey, TCHAR* strRegName, TCHAR* strValue );
|
||||
HRESULT DXUtil_WriteIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD dwValue );
|
||||
HRESULT DXUtil_WriteGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID guidValue );
|
||||
HRESULT DXUtil_WriteBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL bValue );
|
||||
|
||||
HRESULT DXUtil_ReadStringRegKey( HKEY hKey, TCHAR* strRegName, TCHAR* strValue, DWORD dwLength, TCHAR* strDefault );
|
||||
HRESULT DXUtil_ReadIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD* pdwValue, DWORD dwDefault );
|
||||
HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID* pGuidValue, GUID& guidDefault );
|
||||
HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL* pbValue, BOOL bDefault );
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: DXUtil_Timer()
|
||||
// Desc: Performs timer opertations. Use the following commands:
|
||||
// TIMER_RESET - to reset the timer
|
||||
// TIMER_START - to start the timer
|
||||
// TIMER_STOP - to stop (or pause) the timer
|
||||
// TIMER_ADVANCE - to advance the timer by 0.1 seconds
|
||||
// TIMER_GETABSOLUTETIME - to get the absolute system time
|
||||
// TIMER_GETAPPTIME - to get the current time
|
||||
// TIMER_GETELAPSEDTIME - to get the time that elapsed between
|
||||
// TIMER_GETELAPSEDTIME calls
|
||||
//-----------------------------------------------------------------------------
|
||||
enum TIMER_COMMAND { TIMER_RESET, TIMER_START, TIMER_STOP, TIMER_ADVANCE,
|
||||
TIMER_GETABSOLUTETIME, TIMER_GETAPPTIME, TIMER_GETELAPSEDTIME };
|
||||
FLOAT __stdcall DXUtil_Timer( TIMER_COMMAND command );
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// UNICODE support for converting between CHAR, TCHAR, and WCHAR strings
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID DXUtil_ConvertAnsiStringToWide( WCHAR* wstrDestination, const CHAR* strSource, int cchDestChar = -1 );
|
||||
VOID DXUtil_ConvertWideStringToAnsi( CHAR* strDestination, const WCHAR* wstrSource, int cchDestChar = -1 );
|
||||
VOID DXUtil_ConvertGenericStringToAnsi( CHAR* strDestination, const TCHAR* tstrSource, int cchDestChar = -1 );
|
||||
VOID DXUtil_ConvertGenericStringToWide( WCHAR* wstrDestination, const TCHAR* tstrSource, int cchDestChar = -1 );
|
||||
VOID DXUtil_ConvertAnsiStringToGeneric( TCHAR* tstrDestination, const CHAR* strSource, int cchDestChar = -1 );
|
||||
VOID DXUtil_ConvertWideStringToGeneric( TCHAR* tstrDestination, const WCHAR* wstrSource, int cchDestChar = -1 );
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Debug printing support
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID DXUtil_Trace( TCHAR* strMsg, ... );
|
||||
HRESULT _DbgOut( TCHAR*, DWORD, HRESULT, TCHAR* );
|
||||
|
||||
#if defined(DEBUG) | defined(_DEBUG)
|
||||
#define DXTRACE DXUtil_Trace
|
||||
#else
|
||||
#define DXTRACE sizeof
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG) | defined(_DEBUG)
|
||||
#define DEBUG_MSG(str) _DbgOut( __FILE__, (DWORD)__LINE__, 0, str )
|
||||
#else
|
||||
#define DEBUG_MSG(str) (0L)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // DXUTIL_H
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
DirectShow Sample -- Texture3D
|
||||
------------------------------
|
||||
|
||||
Draws video on a Microsoft DirectX 8.0 texture surface. This sample builds
|
||||
on the Direct3D Tutorial05 sample, adding support for rendering video
|
||||
onto a Direct3D surface.
|
||||
|
||||
Note: This sample is known to fail on some systems (referencing
|
||||
invalid memory), for which you may see an error message. This failure occurs
|
||||
during initialization of Direct3D. We recommend updating your video card
|
||||
drivers to the most current revision, as that usually resolves the problem.
|
||||
Since this sample uses interfaces specific to DirectX 8, we highly
|
||||
recommend installing a newer video driver, if available.
|
||||
|
||||
Note: This sample does not support changing the display properties
|
||||
of the monitor while the sample is running.
|
||||
@@ -0,0 +1,9 @@
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Resource constants
|
||||
//-----------------------------------------------------------------------------
|
||||
#define IDI_TEXTURES 10000
|
||||
#define IDD_ABOUTBOX 10001
|
||||
#define ID_HELP_ABOUT 10002
|
||||
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
# Microsoft Developer Studio Project File - Name="Textures" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=Textures - 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 "Textures.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 "Textures.mak" CFG="Textures - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "Textures - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "Textures - 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)" == "Textures - 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 0
|
||||
# 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 /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /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 "WIN32"
|
||||
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 ..\..\BaseClasses\Release\strmbase.lib d3dx8.lib d3d8.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /out:"Release/Texture3D.exe" /libpath:"..\..\..\..\..\lib" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "Textures - 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 0
|
||||
# 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 /MTd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "DEBUG" /FR /YX /FD /c
|
||||
# SUBTRACT CPP /X
|
||||
# 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 "WIN32"
|
||||
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 ..\..\BaseClasses\debug\strmbasd.lib d3dx8.lib d3d8.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/Texture3D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" /stack:0x200000,0x200000
|
||||
# SUBTRACT LINK32 /nodefaultlib
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "Textures - Win32 Release"
|
||||
# Name "Textures - Win32 Debug"
|
||||
# Begin Group "Common"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# 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=.\DShowTextures.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DShowTextures.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Textures.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Textures.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\textures.rc
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "Textures"=.\Textures.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: Textures.h
|
||||
//
|
||||
// Desc: DirectShow sample code - header file for DirectShow/Direct3D8 video
|
||||
// texturing
|
||||
//
|
||||
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#include <d3dx8.h>
|
||||
#include <windows.h>
|
||||
#include <mmsystem.h>
|
||||
#include <atlbase.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <d3d8types.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward Declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT InitDShowTextureRenderer(LPDIRECT3DTEXTURE8 pTexture);
|
||||
void CheckMovieStatus(void);
|
||||
void CleanupDShow(void);
|
||||
HRESULT AddToROT(IUnknown *pUnkGraph);
|
||||
void RemoveFromROT(void);
|
||||
void Msg(TCHAR *szFormat, ...);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Direct3D global variables
|
||||
//-----------------------------------------------------------------------------
|
||||
extern LPDIRECT3D8 g_pD3D; // Used to create the D3DDevice
|
||||
extern LPDIRECT3DDEVICE8 g_pd3dDevice; // Our rendering device
|
||||
extern LPDIRECT3DVERTEXBUFFER8 g_pVB; // Buffer to hold vertices
|
||||
extern LPDIRECT3DTEXTURE8 g_pTexture; // Our texture
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on Textures.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=Textures - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to Textures - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "Textures - Win32 Release" && "$(CFG)" != "Textures - 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 "Textures.mak" CFG="Textures - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "Textures - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "Textures - 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)" == "Textures - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Release
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\Texture3D.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\DShowTextures.obj"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\Textures.obj"
|
||||
-@erase "$(INTDIR)\textures.res"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(OUTDIR)\Texture3D.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Fp"$(INTDIR)\Textures.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)\textures.res" /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\Textures.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=..\..\BaseClasses\Release\strmbase.lib d3dx8.lib d3d8.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\Texture3D.pdb" /machine:I386 /out:"$(OUTDIR)\Texture3D.exe" /libpath:"..\..\..\..\..\lib" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\DShowTextures.obj" \
|
||||
"$(INTDIR)\Textures.obj" \
|
||||
"$(INTDIR)\textures.res"
|
||||
|
||||
"$(OUTDIR)\Texture3D.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "Textures - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\Texture3D.exe" "$(OUTDIR)\Textures.bsc"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\DShowTextures.obj"
|
||||
-@erase "$(INTDIR)\DShowTextures.sbr"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\dxutil.sbr"
|
||||
-@erase "$(INTDIR)\Textures.obj"
|
||||
-@erase "$(INTDIR)\textures.res"
|
||||
-@erase "$(INTDIR)\Textures.sbr"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\Texture3D.exe"
|
||||
-@erase "$(OUTDIR)\Texture3D.ilk"
|
||||
-@erase "$(OUTDIR)\Texture3D.pdb"
|
||||
-@erase "$(OUTDIR)\Textures.bsc"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "DEBUG" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\Textures.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)\textures.res" /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\Textures.bsc"
|
||||
BSC32_SBRS= \
|
||||
"$(INTDIR)\dxutil.sbr" \
|
||||
"$(INTDIR)\DShowTextures.sbr" \
|
||||
"$(INTDIR)\Textures.sbr"
|
||||
|
||||
"$(OUTDIR)\Textures.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||
$(BSC32) @<<
|
||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=..\..\BaseClasses\debug\strmbasd.lib d3dx8.lib d3d8.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\Texture3D.pdb" /debug /machine:I386 /out:"$(OUTDIR)\Texture3D.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib" /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\DShowTextures.obj" \
|
||||
"$(INTDIR)\Textures.obj" \
|
||||
"$(INTDIR)\textures.res"
|
||||
|
||||
"$(OUTDIR)\Texture3D.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("Textures.dep")
|
||||
!INCLUDE "Textures.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "Textures.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "Textures - Win32 Release" || "$(CFG)" == "Textures - Win32 Debug"
|
||||
SOURCE=..\..\..\Common\src\dxutil.cpp
|
||||
|
||||
!IF "$(CFG)" == "Textures - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "Textures - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\dxutil.obj" "$(INTDIR)\dxutil.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=.\DShowTextures.cpp
|
||||
|
||||
!IF "$(CFG)" == "Textures - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\DShowTextures.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "Textures - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\DShowTextures.obj" "$(INTDIR)\DShowTextures.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=.\Textures.cpp
|
||||
|
||||
!IF "$(CFG)" == "Textures - Win32 Release"
|
||||
|
||||
|
||||
"$(INTDIR)\Textures.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ELSEIF "$(CFG)" == "Textures - Win32 Debug"
|
||||
|
||||
|
||||
"$(INTDIR)\Textures.obj" "$(INTDIR)\Textures.sbr" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
SOURCE=.\textures.rc
|
||||
|
||||
"$(INTDIR)\textures.res" : $(SOURCE) "$(INTDIR)"
|
||||
$(RSC) $(RSC_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
//==========================================================================;
|
||||
//
|
||||
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||||
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
|
||||
// PURPOSE.
|
||||
//
|
||||
// Copyright (c) 1998-2001 Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
//--------------------------------------------------------------------------;
|
||||
//
|
||||
// Resource file for DirectShow video texture sample
|
||||
//
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include "resource.h"
|
||||
|
||||
IDI_TEXTURES ICON directx.ico
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About Texture3D"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
ICON IDI_TEXTURES,-1,11,17,20,20
|
||||
LTEXT "DirectShow Texture3D Sample",-1,40,10,131,8,SS_NOPREFIX
|
||||
LTEXT "Copyright (C) 1999-2001 Microsoft Corporation",-1,40,34,
|
||||
188,8
|
||||
DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP
|
||||
LTEXT "Version 8.1",-1,40,22,119,8,SS_NOPREFIX
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 8,1,0,0
|
||||
PRODUCTVERSION 8,1,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "Comments", "DirectShow Sample\0"
|
||||
VALUE "CompanyName", "Microsoft\0"
|
||||
VALUE "FileDescription", "Texture3D Application\0"
|
||||
VALUE "FileVersion", "8.10\0"
|
||||
VALUE "InternalName", "Texture3D\0"
|
||||
VALUE "LegalCopyright", "Copyright (c) 2000-2001 Microsoft Corporation\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "Texture3D.EXE\0"
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "DirectX 8 SDK\0"
|
||||
VALUE "ProductVersion", "8.1\0"
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
Reference in New Issue
Block a user