简体   繁体   中英

Where can I find the source code examples for “Introduction to 3D game programming with DirectX 9.0c”?

I have a book : "Introduction to 3D game programming with DirectX 9.0c– a shader approach" by Frank Luna.

The official site is dead and I can't seem to find 3 main files used for all the projects.

  • d3dApp.h
  • d3dApp.cpp
  • d3dUtil.h

Does someone know where can I get them?

All I have found was this :

But there is no source there. Also I've found some fragments

//A sample directX demo outputting some flashing color text

#include "d3dApp.h"
#include <tchar.h>
#include <crtdbg.h>

//Our application is derived from the D3DAPP class, making setup for a game 
//or other program easier in the long run
class HelloD3DApp : public D3DApp
{
public:
    HelloD3DApp(HINSTANCE hInstance, std::string winCaption, D3DDEVTYPE devType, DWORD requestedVP);
    ~HelloD3DApp();

    bool checkDeviceCaps();
    void onLostDevice();
    void onresetDevice();
    void updateScene(float dt);
    void drawScene();

private:

    ID3DXFont* mFont;
};

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
                   PSTR cmdLine, int showCmd)
{
    // Enable run-time memory check for debug builds.
    #if defined(DEBUG) | defined(_DEBUG)
        _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    #endif


    HelloD3DApp app(hInstance, "Hello Direct3D", D3DDEVTYPE_HAL, D3DCREATE_HARDWARE_VERTEXPROCESSING);
    gd3dApp = &app;

    return gd3dApp->run();
}

HelloD3DApp::HelloD3DApp(HINSTANCE hInstance, std::string winCaption, D3DDEVTYPE devType, DWORD requestedVP)
: D3DApp(hInstance, winCaption, devType, requestedVP)
{
    srand(time_t(0));

    if(!checkDeviceCaps())
    {
        MessageBox(0, "checkDeviceCaps() Failed", 0, 0);
        PostQuitMessage(0);
    }

    LOGFONTA font;
    font.lfHeight          = 80;
                font.lfWidth            = 40;
    font.lfEscapement       = 0;
    font.lfOrientation      = 0;
                font.lfWeight          = FW_BOLD;
                font.lfItalic          = true;
    font.lfUnderline        = false;
    font.lfStrikeOut        = false;
                font.lfCharSet        = DEFAULT_CHARSET;
                font.lfOutPrecision  = OUT_DEFAULT_PRECIS;
    font.lfClipPrecision    = CLIP_CHARACTER_PRECIS;
                font.lfQuality        = DEFAULT_QUALITY;
                font.lfPitchAndFamily   = DEFAULT_PITCH | FF_DONTCARE;
               _tcscpy(font.lfFaceName, _T("Times New Roman"));

    HR(D3DXCreateFontIndirect(gd3dDevice, &font, &mFont));
}

HelloD3DApp::~HelloD3DApp()
{
    ReleaseCOM(mFont);
}

bool HelloD3DApp::checkDeviceCaps()
{
    // Nothing to check.
    return true;
}

void HelloD3DApp::onLostDevice()
{
    HR(mFont->OnLostDevice());
}

void HelloD3DApp::onresetDevice()
{
    HR(mFont->onresetDevice());
}

void HelloD3DApp::updateScene(float dt)
{
}

void HelloD3DApp::drawScene()
{
    HR(gd3dDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0));

    RECT formatRect;
    GetClientRect(mhMainWnd, &formatRect);

    HR(gd3dDevice->BeginScene());

    mFont->DrawText(TEXT("Hello </DIC>!"), -1, 
        &formatRect, DT_CENTER | DT_VCENTER, 
        D3DCOLOR_XRGB(rand() % 256, rand() % 256, rand() % 256));

    HR(gd3dDevice->EndScene());
    HR(gd3dDevice->Present(0, 0, 0, 0));
}

But these does not help me either.

d3dApp.h

d3dApp.cpp

d3dUtil.h

These are the same files as in the zip file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM