Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DXUtil, DXutil 
:(
    Опции темы
Stas96
Дата 6.11.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.9.2009
Где: Дом

Репутация: нет
Всего: нет



Ув.программисты smile  читаю книгу «Программирование стратегических игр с DirectX 9.0» у меня проблема с кодом вот код smile :
main.h
Код

#define STRICT
#include <windows.h>
#include <commctrl.h>
#include <commdlg.h>
#include <math.h>
#include <tchar.h>
#include <stdio.h>
#include <D3DX9.h>
#include "DXUtil.h"
#include "D3DEnumeration.h"
#include "D3DSettings.h"
#include "D3DApp.h"
#include "D3DFont.h"
#include "D3DUtil.h"

// Структура для данных вершин блока
struct TILEVERTEX
{
   D3DXVECTOR3 position;  // Позиция
   D3DXVECTOR3 vecNorm;   // Нормаль
   FLOAT       tu, tv;    // Координаты текстуры (U,V)
};

// Наш собственный FVF, описывающий созданную структуру данных вершин
// D3DFVF_XYZ= Информация о координатах
// D3DFVF_NORMAL = Информация о нормалях
// D3DFVF_TEX1   = Информация о текстуре
#define D3DFVF_TILEVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)

class CD3DFramework : public CD3DApplication
{
    // Шрифт для отображения FPS и данных видеорежима
   CD3DFont*              m_pStatsFont;
   // Массив целых чисел для хранения блочной карты
   int                    m_iTileMap[100];
   short                  m_shTileMapWidth;
   short                  m_shTileMapHeight;
   // Буфер для хранения текстур
   LPDIRECT3DTEXTURE9     m_pTexture[32];
   // Размеры окна
   short                  m_shWindowWidth;
   short                  m_shWindowHeight;
   // Буфер для хранения вершин
   LPDIRECT3DVERTEXBUFFER9 m_pVBTile;

protected:
   HRESULT OneTimeSceneInit();
   HRESULT InitDeviceObjects();
   HRESULT RestoreDeviceObjects();
   HRESULT InvalidateDeviceObjects();
   HRESULT DeleteDeviceObjects();
   HRESULT Render();
   HRESULT FinalCleanup();
   HRESULT CreateD3DXTextMesh(LPD3DXMESH* ppMesh, TCHAR* pstrFont, DWORD dwSize);
   // Создание буфера вершин блока
   void vInitTileVB(void);
   // Рисование блока на экране
   void vDrawTile(float fXPos, float fYPos, float fXSize, float fYSize, int iTexture);

public:
   LRESULT MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
   CD3DFramework();
};

Main.ccp
Код

//-----------------------------------------------------------------------------
// Name: D3DFrame_2DTiles
//
// Description: Example code showing how to create a simple tile map
//                using an array of integers that point to textures
//                in memory.
//
// File Function: Main body of the function (main.cpp)
//
// Code: 
//        Copyright (c) 2002 LostLogic Corporation. All rights reserved.
//
// Libraries Required:
//        d3d9.lib dxguid.lib d3dx9dt.lib d3dxof.lib comctl32.lib    winmm.lib
//
// DX Files Required:
//        d3dapp.cpp
//        d3denumeration.cpp
//        d3dfont.cpp
//        d3dsettings.cpp
//        d3dutil.cpp
//        dxutil.cpp
//
// Local Files Required:
//        main.cpp
//        main.h
//
// Original D3D Application Shell Code: 
//        Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#include "main.h"

LPD3DXBUFFER        pCode;
LPD3DXBUFFER        pErrors;

//-----------------------------------------------------------------------------
// Desc: Entry point to the program. Initializes everything, and goes into a
//       message-processing loop. Idle time is used to render the scene.
//-----------------------------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    // Instance of the framework application
    CD3DFramework d3dApp;

    InitCommonControls();
    
    // Create the application environment
    // ----------------------------------
    // This initializes the display and loads all appropriate data.
    //
    if( FAILED( d3dApp.Create( hInst ) ) )
        return 0;

    // Start up the application
    // ------------------------
    // Starts the program running by activating the message loop
    // and render functions.
    //
    return d3dApp.Run();
}

//-----------------------------------------------------------------------------
// Desc: Application constructor. Sets attributes for the app.
//-----------------------------------------------------------------------------
CD3DFramework::CD3DFramework()
{
    m_strWindowTitle    = _T("2D Tile Example");
    m_pStatsFont        = NULL;

    m_shWindowWidth        = 480;
    m_shWindowHeight    = 480;
    m_shTileMapWidth    = 10;
    m_shTileMapHeight    = 10;
}

//-----------------------------------------------------------------------------
// Desc: Called during initial app startup, this function performs all the
//       permanent initialization.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::OneTimeSceneInit()
{
    m_pStatsFont = new CD3DFont( _T("Arial"), 8, NULL );
    if( m_pStatsFont == NULL )
        return E_FAIL;

    //---------------------------------------------
    //          INITIALIZE TILE MAP
    //---------------------------------------------
    
    // Clear out the map with the grass tile
    memset( m_iTileMap, 0, (m_shTileMapWidth*m_shTileMapHeight) * sizeof( int ) );

    // Fill the second half with beach tile
    for( int i = 0; i < 50; i++ ) {
        m_iTileMap[ i+50 ] = 3;
    }

    // Randomly place rocks on the grass
    
    // Seed the randomized
    srand( timeGetTime() );
    for( i = 0; i < 50; i++ ) {
        // Place rock tile if random 0-10 = 5
        if( rand()%10 == 5 ) 
            m_iTileMap[ i ] = 1;
    }

    // Place the grass edging along the beach tiles
    for( i = 50; i < 60; i++ ) {
        m_iTileMap[ i ] = 2;
    }
    
    return S_OK;
}

//-----------------------------------------------------------------------------
// 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 CD3DFramework::Render()
{
    D3DXMATRIX            matTranslation;
    D3DXMATRIX            matRotation;
    D3DXMATRIX            matRotation2;
    D3DXMATRIX            matScale;
    int                    iX;
    int                    iY;
    int                    iCurTile;
    float                fTileX, fTileY;

    // Clear the viewport
    m_pd3dDevice->Clear( 0L, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(120,120,120), 1.0f, 0L );

    // Begin the scene 
    if( SUCCEEDED( m_pd3dDevice->BeginScene() ) ) {
        // Vertical
        for( iY = 0; iY < m_shTileMapHeight; iY++ ) {
            // Horizontal
            for( iX = 0; iX < m_shTileMapWidth; iX++ ) {
                // Figure out which tile to display
                iCurTile = m_iTileMap[ iX + ( iY * m_shTileMapWidth ) ];
                // Figure out the on-screen coordinates
                fTileX = -240.0f+(iX*48.0f);
                fTileY = 192.0f-(iY*48.0f);
                // Display the tile
                vDrawTile( fTileX, fTileY, 48.0f, 48.0f, iCurTile );
            } 
        }
        // Show frame rate
        m_pStatsFont->DrawText( 2,  0, D3DCOLOR_ARGB(255,255,255,0), m_strFrameStats );
        // Show video device information
        m_pStatsFont->DrawText( 2, 20, D3DCOLOR_ARGB(255,255,255,0), m_strDeviceStats );

        // End the scene
        m_pd3dDevice->EndScene();
    }

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::InitDeviceObjects()
{
    HRESULT hr;

    if( FAILED( hr = m_pStatsFont->InitDeviceObjects( m_pd3dDevice ) ) )
        return hr;

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Initialize scene objects.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::RestoreDeviceObjects()
{
    char        szFileName[512];
    D3DXMATRIX    matproj,matview;
        
    // Restore the fonts
    m_pStatsFont->RestoreDeviceObjects();

    // Set up the textures
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
    m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
    m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

    // Set miscellaneous render states
    m_pd3dDevice->SetRenderState( D3DRS_DITHERENABLE,   FALSE );
    m_pd3dDevice->SetRenderState( D3DRS_SPECULARENABLE, FALSE );
    m_pd3dDevice->SetRenderState( D3DRS_ZENABLE,        TRUE );
    m_pd3dDevice->SetRenderState( D3DRS_AMBIENT,        0x00888888 );

    // Setup the 3D View
    D3DXMatrixIdentity(&matview);
    m_pd3dDevice->SetTransform(D3DTS_VIEW, &matview);

    D3DXMatrixOrthoLH(&matproj, (float)m_shWindowWidth, (float)m_shWindowHeight, 0, 1);
    m_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matproj);
    m_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
    m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    m_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
    m_pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);

    // Setup a material
    D3DMATERIAL9 mtrl;
    D3DUtil_InitMaterial( mtrl, 1.0f, 1.0f, 1.0f, 1.0f );
    m_pd3dDevice->SetMaterial( &mtrl );

    //---------------------------------------------
    //      INITIALIZE TILE MAP TEXTURES
    //---------------------------------------------

    // Load the texture for the terrain
    sprintf(szFileName,"grass00.bmp");
    if( FAILED( D3DXCreateTextureFromFile( m_pd3dDevice, szFileName, &m_pTexture[0] ) ) ) {
        return S_OK;
    }

    sprintf(szFileName,"grass_rocks.bmp");
    if( FAILED( D3DXCreateTextureFromFile( m_pd3dDevice, szFileName, &m_pTexture[1] ) ) ) {
        return S_OK;
    }

    sprintf(szFileName,"grass_edging_bottom.bmp");
    if( FAILED( D3DXCreateTextureFromFile( m_pd3dDevice, szFileName, &m_pTexture[2] ) ) ) {
        return S_OK;
    }

    sprintf(szFileName,"beach.bmp");
    if( FAILED( D3DXCreateTextureFromFile( m_pd3dDevice, szFileName, &m_pTexture[3] ) ) ) {
        return S_OK;
    }

    //---------------------------------------------
    //         INITIALIZE 3D-2D TILE
    //---------------------------------------------
    vInitTileVB();

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Called when the app is exiting, or the device is being changed,
//       this function deletes any device dependent objects.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::InvalidateDeviceObjects()
{
    // Invalidate the font
    m_pStatsFont->InvalidateDeviceObjects();
    // Release textures
    SAFE_RELEASE( m_pTexture[ 0 ] );
    SAFE_RELEASE( m_pTexture[ 1 ] );
    SAFE_RELEASE( m_pTexture[ 2 ] );
    SAFE_RELEASE( m_pTexture[ 3 ] );
    // Release 3D-2D tile
    SAFE_RELEASE( m_pVBTile );

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Called when the app is exiting, or the device is being changed,
//       this function deletes any device dependent objects.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::DeleteDeviceObjects()
{
    // Delete the font
    m_pStatsFont->DeleteDeviceObjects();
    // Release textures
    SAFE_RELEASE( m_pTexture[ 0 ] );
    SAFE_RELEASE( m_pTexture[ 1 ] );
    SAFE_RELEASE( m_pTexture[ 2 ] );
    SAFE_RELEASE( m_pTexture[ 3 ] );
    // Release 3D-2D tile
    SAFE_RELEASE( m_pVBTile );

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Called before the app exits, this function gives the app the chance
//       to cleanup after itself.
//-----------------------------------------------------------------------------
HRESULT CD3DFramework::FinalCleanup()
{
    // Delete the font
    SAFE_DELETE( m_pStatsFont );
    // Delete textures
    SAFE_DELETE( m_pTexture[ 0 ] );
    SAFE_DELETE( m_pTexture[ 1 ] );
    SAFE_DELETE( m_pTexture[ 2 ] );
    SAFE_DELETE( m_pTexture[ 3 ] );
    // Delete 3D-2D tile
    SAFE_DELETE( m_pVBTile );

    return S_OK;
}

//-----------------------------------------------------------------------------
// Desc: Message proc function to handle key and menu input
//-----------------------------------------------------------------------------
LRESULT CD3DFramework::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch ( uMsg ) {
        // Set the size of the window upon startup
        case WM_CREATE:
            SetWindowPos( 
                hWnd, 
                NULL, 
                0,                    // X-Pos
                0,                    // Y-Pos
                m_shWindowWidth,    // Width
                m_shWindowHeight,    // Height
                NULL);
            break;
        break;
    };

    return CD3DApplication::MsgProc( hWnd, uMsg, wParam, lParam );
}

void CD3DFramework::vInitTileVB( void )
{
    TILEVERTEX* pVertices;

    // Create the interface object buffer
    if( FAILED( m_pd3dDevice->CreateVertexBuffer( 
        4*sizeof(TILEVERTEX),
        0, 
        D3DFVF_TILEVERTEX,
        D3DPOOL_DEFAULT, 
        &m_pVBTile,
        NULL ) ) )
    {
        return;
    }

    // Lock the buffer for editing
    if( FAILED( m_pVBTile->Lock( 
        0, 
        0, 
        (void**)&pVertices, 
        0 ) ) ) {
        
        return;
    }

    // Create the vertices
    pVertices[0].position    = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
    pVertices[0].tu            = 0.0f;
    pVertices[0].tv            = 1.0f;
    pVertices[0].vecNorm    = D3DXVECTOR3(0.0f,0.0f,1.0f);

    pVertices[1].position    = D3DXVECTOR3( 0.0f, 1.0f, 0.0f );
    pVertices[1].tu            = 0.0f;
    pVertices[1].tv            = 0.0f;
    pVertices[1].vecNorm    = D3DXVECTOR3(0.0f,0.0f,1.0f);

    pVertices[2].position    = D3DXVECTOR3( 1.0f, 0.0f, 0.0f );
    pVertices[2].tu            = 1.0f;
    pVertices[2].tv            = 1.0f;
    pVertices[2].vecNorm    = D3DXVECTOR3(0.0f,0.0f,1.0f);

    pVertices[3].position    = D3DXVECTOR3( 1.0f, 1.0f, 0.0f );
    pVertices[3].tu            = 1.0f;
    pVertices[3].tv            = 0.0f;
    pVertices[3].vecNorm    = D3DXVECTOR3(0.0f,0.0f,1.0f);

    // Unlock the buffer, done editing
    m_pVBTile->Unlock();
};

void CD3DFramework::vDrawTile( float fXPos, float fYPos, float fXSize, float fYSize, int iTexture )
{
    D3DXMATRIX    matWorld;
    D3DXMATRIX    matRotation;
    D3DXMATRIX    matTranslation;
    D3DXMATRIX    matScale;
    
    // Set default position,scale,rotation
    D3DXMatrixIdentity( &matTranslation );
    // Scale the tile
    D3DXMatrixScaling( &matScale, fXSize, fYSize, 1.0f );
    D3DXMatrixMultiply( &matTranslation, &matTranslation, &matScale );
    // Rotate the tile
    D3DXMatrixRotationZ( &matRotation, 0.0f );
    D3DXMatrixMultiply( &matWorld, &matTranslation, &matRotation );
    
    // Move the tile
    matWorld._41 = fXPos-0.5f;    // X-Pos
    matWorld._42 = fYPos+0.5f;    // Y-Pos
    
    // Set matrix
    m_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
    // Set the texture to use
    m_pd3dDevice->SetTexture( 0, m_pTexture[ iTexture ] );
    // Use the tile vertex buffer
    m_pd3dDevice->SetStreamSource( 0, m_pVBTile, 0, sizeof(TILEVERTEX) );
    // Use the tile vertex format
    m_pd3dDevice->SetFVF( D3DFVF_TILEVERTEX );
    // Display the quad
    m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
    // Dereference texture
    m_pd3dDevice->SetTexture( 0, NULL);
}

class CUnitDefense
{
    private:
        unsigned int    m_iMissileArmorRating;
        unsigned int    m_iBulletArmorRating;
        unsigned int    m_iLaserArmorRating;
        unsigned int    m_iMeleeArmorRating;
        int                m_iHitPoints;
        int                m_iRegenRate;

    public:
        CUnitDefense();
        ~CUnitDefense();
};

class CUnitOffense
{
    private:
        unsigned int    m_iMissileDamageRating;
        unsigned int    m_iBulletDamageRating;
        unsigned int    m_iLaserDamageRating;
        unsigned int    m_iMeleeDamageRating;
        unsigned int    m_iSplashRadius;
        unsigned int    m_iRateOfFire;
        unsigned int    m_iProjectileSpeed;

    public:
        CUnitOffense();
        ~CUnitOffense();
};

class CUnitMovement
{
    private:
        unsigned int    m_iSpeed;
        unsigned int    m_iMovementType;
        unsigned int    m_iAcceleration;
        unsigned int    m_iDeacceleration;

    public:
        CUnitMovement();
        ~CUnitMovement();
};

class CUnit
{
    private:
        CUnitDefense    m_Defense;
        CUnitOffense    m_Offense;
        CUnitMovement    m_Movement;
    public:
        CUnit();
        ~CUnit();
};


А вот ошибка:fatal error C1083: Не удается открыть файл include: DXUtil.h: No such file or directory.   smile 
Нарыл, что этот файл должен быть в папке сommon но у меня папки нету.Поискав дольше нашел что эту папку заменили на "DXUT" но  и там файла я не обнаружил smile .Прочитал что файл тоже переименовали но на какое имя не знаю smile ?Может кто поможет решить эту страшную тайну smile  smile  smile 


Это сообщение отредактировал(а) Stas96 - 6.11.2009, 21:42
PM MAIL   Вверх
EgoBrain
Дата 7.11.2009, 03:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Читая книгу Вы так или иначе, читая между строк и в прямом тексте, должны были понять что данный файл это специальная утилита не входящая с стандартный набор DirectX, и либо написать ее самому (что очень полезно, конечно по примеру) либо найти готовую.  smile 
http://netlib.borda.ru/?1-1-0-00000006-000-0-0
http://www.jbpub.com/samples/wordware/archive/ - третья строчка сверху!
PM MAIL ICQ Skype   Вверх
Stas96
Дата 7.11.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.9.2009
Где: Дом

Репутация: нет
Всего: нет



Спасибо большое за помощь. smile 
PM MAIL   Вверх
Stas96
Дата 7.11.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.9.2009
Где: Дом

Репутация: нет
Всего: нет



Спасибо за помощь еще раз.Помогло только с одним файлом вылезла ошибка на другой файл " D3DEnumeration.h  "на том форуме про него нечего нету, точнее есть, что надо скачать папку common.Но там ссылки битые убедительная просьба выложить эту папку. Заранее благодарен.
PM MAIL   Вверх
oilcat
Дата 6.10.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.10.2010

Репутация: нет
Всего: нет



--------------------Configuration: D3DFrame_2DTiles - Win32 Debug--------------------
Compiling...
d3dapp.cpp
c:\documents and settings\ñåðåæà\ðàáî÷èé ñòîë\barron_strategygameprogdx9\dxsdk\samples\c++\common\src\d3dapp.cpp(833) : error C2065: 'ULongToHandle' : undeclared identifier
d3dsettings.cpp
c:\documents and settings\ñåðåæà\ðàáî÷èé ñòîë\barron_strategygameprogdx9\dxsdk\samples\c++\common\src\d3dsettings.cpp(276) : error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 
'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
        None of the functions with this name in scope match the target type
c:\documents and settings\ñåðåæà\ðàáî÷èé ñòîë\barron_strategygameprogdx9\dxsdk\samples\c++\common\src\d3dsettings.cpp(498) : error C2065: 'ULongToPtr' : undeclared identifier
c:\documents and settings\ñåðåæà\ðàáî÷èé ñòîë\barron_strategygameprogdx9\dxsdk\samples\c++\common\src\d3dsettings.cpp(671) : error C2065: 'UlongToPtr' : undeclared identifier
Error executing cl.exe.

D3DFrame_2DTiles.exe - 4 error(s), 0 warning(s)
 
 У меня все файлы есть, но и там есть ошибки...если еще кто занимается этим или собирается, могу скинуть все что не хватает для этой книги.
PM MAIL   Вверх
alexvs11
Дата 6.10.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: нет
Всего: 10



вы ставили DirectX SDK? не все файлы и библиотеки из SDK идут в стандандартной поставки студии
PM MAIL   Вверх
oilcat
Дата 9.10.2010, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.10.2010

Репутация: нет
Всего: нет



Цитата(alexvs11 @ 6.10.2010,  21:28)
вы ставили DirectX SDK? не все файлы и библиотеки из SDK идут в стандандартной поставки студии

я лично собирал по всему интернету. Именно не доставало файлов .cpp, всех кроме main.cpp, их,кажется, я с майкрософта скачивал. А что касается SDK, то есть справочные и подключаемые файлы для C++ на английском языке, в которые входят все недостающие библеотеки и хеадеры. Но все-равно не компилируется, как видите.
PM MAIL   Вверх
oilcat
Дата 10.1.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.10.2010

Репутация: нет
Всего: нет



Как я компилировал пример D3DFrame_Isometric2DTiles из книги, используя последнюю версию DX SDK 2007:

1. Скопировал проект, как он есть в файлах книги и попробовал скомпилировать. Получил кучу сообщений об ошибках из-за невозможности открыть включаемые файлы. Поменял пути к включаемым файлам (щелкаешь правой кнопкой по файлу .h в списке файлов проекта, выбираешь Properties и меняешь путь во второй строке на правильный.
2. Добавил пути поиска включаемых файлов и библиотек. Tools - Options - Directories. Для Include Files добавил путь C:\DXSDK\Include. Для Library Files добавил C:\DXSDK\LIB\X86. Обратите внимание, что раньше все библиотеки лежали в LIB, а теперь в зависимости от платформы разделены по двум каталогам - X86 для 32-разрядной и X64 для 64-разрядной.
3. Поскольку в новой версии DX SDK нет фреймворка приложения, который используется в книге, я скопировал его из более ранней версии SDK (это папка DXSDK\Samples\C++\Common). Если у вас нет этой папки, скачайте ее по ссылке http:://netlib.narod.ru/common.zip. Потом я добавил путь к заголовочным файлам в проект Project - Settings - C/C++, выбираем в поле Category Preprocessor, и в поле Additional include directories вводим C:\DXSDK\Samples\C++\Common\Include.
4. Кажется все настроено, попробуем скомпилировать. Опа - мы получили те же сообщения об ошибках, которые здесь уже обсуждались.

Compiling...
d3dapp.cpp
c:\documents and settings\dxsdk\samples\c++\common\src\d3dapp.cpp(841) : error C2065: 'ULongToHandle' : undeclared identifier
d3denumeration.cpp
d3dfont.cpp
d3dsettings.cpp
c:\documents and settings\dxsdk\samples\c++\common\src\d3dsettings.cpp(274) : error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int
,unsigned int,long)'
None of the functions with this name in scope match the target type
c:\documents and settings\dxsdk\samples\c++\common\src\d3dsettings.cpp(496) : error C2065: 'ULongToPtr' : undeclared identifier
c:\documents and settings\dxsdk\samples\c++\common\src\d3dsettings.cpp(667) : error C2065: 'UlongToPtr' : undeclared identifier
d3dutil.cpp
dxutil.cpp
Main.cpp
Error executing cl.exe.

Эти ошибки возникают из-за того, что в новой версии SDK нет файла basetsd.h. Я скопировал его в папку Common и в файл main.h добавил#include "basetsd.h". Если вы скопировали фреймворк по приведенной выше ссылке, там уже есть basetsd.h.

5. Компилим снова. Все проходит успешно, но при компоновке не находится библиотека d3dx9dt.lib. Копируем его из старого SDK в новый (папка DXSDK\LIB\X86). Компилируем снова - ВСЕ ЗАРАБОТАЛО.
Автор netlib
У меня тоже заработало )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.