Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Окно Windows


Автор: Stas96 20.9.2009, 18:16
Помогите вот код:

Код

dxfunc.h

#ifndef _DXFUNC_H_
#define _DXFUNC_H_
 
#include "d3d9.h"
 
 
//Функция инициализации Direct3D
HRESULT DX3DInit (IDirect3D9 **ppiD3D9,
                                  IDirect3DDevice9 **ppiD3DDevice9,
                                  HWND hWnd,
                                  DWORD iWidth,
                                  DWORD iHeight,
                                  BOOL bFullScreen
                                  );
#endif




Код

dxfunc.cpp


    #include "dxfunc.h"
// Функция инициализации Direct3D
HRESULT DX3DInit(IDirect3D9 **ppiD3D9, 
                IDirect3DDevice9 **ppiD3DDevice9,
                HWND hWnd, 
                                DWORD iWidth,
                                DWORD iHeight,
                                BOOL bFullScreen)
{
  // Инициализация 
  if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) == NULL)
    return E_FAIL;
 
  // Заполняем основные параметры представления
  D3DPRESENT_PARAMETERS d3dpp;
  ZeroMemory(&d3dpp, sizeof(d3dpp));
 
  d3dpp.BackBufferWidth = iWidth;
  d3dpp.BackBufferHeight = iHeight;
 
  // Запрос на отображение в полноэкранном режиме
  int  iRes;
  if (!bFullScreen)
      iRes=MessageBox(hWnd,L"Use fullscreen mode?",L"Screen", MB_YESNO | MB_ICONQUESTION);
  else
          iRes = IDYES;
 
 
  if(iRes == IDYES)
  {
      //////////////////////////////////////////////////////////
          // Полноэкранный режим
      //////////////////////////////////////////////////////////
          // Установка параметров полноэкранного режима
      d3dpp.BackBufferFormat = D3DFMT_R5G6B5;
          d3dpp.SwapEffect       = D3DSWAPEFFECT_FLIP;
          d3dpp.Windowed         = FALSE;
      d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
      d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
  } 
  else 
  {
      //////////////////////////////////////////////////////////
          // Оконный режим
      //////////////////////////////////////////////////////////
          RECT wndRect;
      RECT clientRect;
          GetWindowRect(hWnd, &wndRect);
      GetClientRect(hWnd, &clientRect);   
 
          iWidth  = iWidth + (wndRect.right-wndRect.left)  - (clientRect.right-clientRect.left);
          iHeight = iHeight + (wndRect.bottom-wndRect.top) - (clientRect.bottom-clientRect.top);
 
          MoveWindow(hWnd, wndRect.left, wndRect.top, iWidth, iHeight, TRUE);
 
          // Получить формат пикселя
          D3DDISPLAYMODE d3ddm;
          (*ppiD3D9)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
 
          // Установка параметров
          d3dpp.BackBufferFormat = d3ddm.Format;
          d3dpp.SwapEffect       = D3DSWAPEFFECT_DISCARD;
          d3dpp.Windowed         = TRUE;
  }
  
  DWORD Flags= D3DCREATE_MIXED_VERTEXPROCESSING;
 
  // Создать 3D устройство
  HRESULT hRes;
  if(FAILED(hRes = (*ppiD3D9)->CreateDevice(
          D3DADAPTER_DEFAULT, 
          D3DDEVTYPE_HAL, hWnd, Flags, 
          &d3dpp, ppiD3DDevice9)))
          return hRes;
 
  // Установить перспективу
  float Aspect = (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;
  D3DXMATRIX  matProjection;
  D3DXMATRIXPerspectiveFovLH(&matProjection, D3DX_PI/4.0f, Aspect, 0.1f, 1000.0f);
  (*ppiD3DDevice9)->SetTransform(D3DTS_PROJECTION, &matProjection);
 
  (*ppiD3DDevice9)->SetRenderState(D3DRS_LIGHTING, FALSE);
 
  return S_OK;
}
 
HRESULT DX3DInitZ(IDirect3D9 **ppiD3D9, 
                IDirect3DDevice9 **ppiD3DDevice9,
                HWND hWnd, 
                                DWORD iWidth,
                                DWORD iHeight,
                                BOOL bFullScreen)
{
  // Инициализация 
  if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) == NULL)
    return E_FAIL;
 
  // Заполняем основные параметры представления
  D3DPRESENT_PARAMETERS d3dpp;
  ZeroMemory(&d3dpp, sizeof(d3dpp));
 
  d3dpp.BackBufferWidth = iWidth;
  d3dpp.BackBufferHeight = iHeight;
  d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
  d3dpp.EnableAutoDepthStencil = TRUE;
 
  // Запрос на отображение в полноэкранном режиме
  int  iRes;
  if (!bFullScreen)
      iRes=MessageBox(hWnd, "Use fullscreen mode?", "Screen", MB_YESNO | MB_ICONQUESTION);
  else
          iRes = IDYES;
 
  if(iRes == IDYES)
  {
      //////////////////////////////////////////////////////////
          // Полноэкранный режим
      //////////////////////////////////////////////////////////
          // Установка параметров полноэкранного режима
      d3dpp.BackBufferFormat = D3DFMT_R5G6B5;
          d3dpp.SwapEffect       = D3DSWAPEFFECT_FLIP;
          d3dpp.Windowed         = FALSE;
      d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
      d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
  } 
  else 
  {
      //////////////////////////////////////////////////////////
          // Оконный режим
      //////////////////////////////////////////////////////////
          RECT wndRect;
      RECT clientRect;
          GetWindowRect(hWnd, &wndRect);
      GetClientRect(hWnd, &clientRect);   
 
          iWidth  = iWidth + (wndRect.right-wndRect.left)  - (clientRect.right-clientRect.left);
          iHeight = iHeight + (wndRect.bottom-wndRect.top) - (clientRect.bottom-clientRect.top);
 
          MoveWindow(hWnd, wndRect.left, wndRect.top, iWidth, iHeight, TRUE);
 
          // Получить формат пикселя
          D3DDISPLAYMODE d3ddm;
          (*ppiD3D9)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
 
          // Установка параметров
          d3dpp.BackBufferFormat = d3ddm.Format;
          d3dpp.SwapEffect       = D3DSWAPEFFECT_DISCARD;
          d3dpp.Windowed         = TRUE;
  }
  
  DWORD Flags= D3DCREATE_MIXED_VERTEXPROCESSING;
 
  // Создать 3D устройство
  HRESULT hRes;
  if(FAILED(hRes = (*ppiD3D9)->CreateDevice(
          D3DADAPTER_DEFAULT, 
          D3DDEVTYPE_HAL, hWnd, Flags, 
          &d3dpp, ppiD3DDevice9)))
          return hRes;
 
  // Установить перспективу
  float Aspect = (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;
  D3DXMATRIX matProjection;
  D3DXMatrixPerspectiveFovLH(&matProjection, D3DX_PI/4.0f, Aspect, 2.0f, 1000.0f);
  (*ppiD3DDevice9)->SetTransform(D3DTS_PROJECTION, &matProjection);
 
  (*ppiD3DDevice9)->SetRenderState(D3DRS_LIGHTING, FALSE);
 
  return S_OK;
}
 


А вот список ошибок:
"1>.\dxfunc.cpp(81) : error C2065: D3DXMATRIX: необъявленный идентификатор
1>.\dxfunc.cpp(81) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "matProjection"
1>.\dxfunc.cpp(81) : error C2065: matProjection: необъявленный идентификатор
1>.\dxfunc.cpp(82) : error C2065: matProjection: необъявленный идентификатор
1>.\dxfunc.cpp(82) : error C2065: D3DX_PI: необъявленный идентификатор
1>.\dxfunc.cpp(82) : error C3861: D3DXMATRIXPerspectiveFovLH: идентификатор не найден
1>.\dxfunc.cpp(83) : error C2065: matProjection: необъявленный идентификатор
1>.\dxfunc.cpp(113) : error C2664: MessageBoxW: невозможно преобразовать параметр 2 из 'const char [21]' в 'LPCWSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>.\dxfunc.cpp(166) : error C2065: D3DXMATRIX: необъявленный идентификатор
1>.\dxfunc.cpp(166) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "matProjection"
1>.\dxfunc.cpp(166) : error C2065: matProjection: необъявленный идентификатор
1>.\dxfunc.cpp(167) : error C2065: matProjection: необъявленный идентификатор
1>.\dxfunc.cpp(167) : error C2065: D3DX_PI: необъявленный идентификатор
1>.\dxfunc.cpp(167) : error C3861: D3DXMatrixPerspectiveFovLH: идентификатор не найден
1>.\dxfunc.cpp(168) : error C2065: matProjection: необъявленный идентификатор"

Автор: mes 20.9.2009, 18:25
Цитата(Stas96 @  20.9.2009,  17:16 Найти цитируемый пост)
Помогите вот код:


Ну так внимательно прочитайте, что пишет компилятор:
Цитата(Stas96 @  20.9.2009,  17:16 Найти цитируемый пост)
D3DXMATRIX: необъявленный идентификатор
...
D3DX_PI: необъявленный идентификатор
...
D3DXMATRIXPerspectiveFovLH: идентификатор не найден


значит не включили тот файл, где находятся нужные Вам объявления.

Автор: Acer 20.9.2009, 19:27
 smile 
Самый большой ужас - это русифицированный компилятор  smile 

Автор: Stas96 20.9.2009, 19:38
мне нравится и русский smile  smile  smile

Добавлено через 9 минут и 43 секунды
помочь кто-о может не чего не помагает этот код взял из примеров книги .......

Автор: Andrey44 21.9.2009, 07:22
Код

#include <d3d9.h>
#pragma comment ( lib, "d3d9.lib")
#include <d3dx9.h>
#pragma comment ( lib, "d3dx9.lib")
Вот и все что надо было.

Автор: Stas96 21.9.2009, 15:00
спасибо..........большое
вот токо не помогло уже даже другой компилятор поставил...(

Автор: Andrey44 22.9.2009, 07:08
Ну а пути ты в настройках написал?
Project->Properties->C++->General->Additional Include Directories - пишешь путь к файлам (C:\............DXSDK\Include
Project->Properties->Linker->General->Additional Library Directories - пишешь путь к lib файлам (C:\............DXSDK\Lib

Автор: EgoBrain 22.9.2009, 13:23
Цитата(Stas96 @ 20.9.2009,  19:38)
мне нравится и русский smile  smile  smile

Добавлено @ 19:48
помочь кто-о может не чего не помагает этот код взял из примеров книги .......

До боли знакомый код!  smile  Никак батенька Фленов!?
Я кстати тоже по нему начал изучать, так что мы с вами в одной лодке похоже плывем, может даже в ногу будем идти  smile , вот только я очень медленно продвигаюсь из-за незнания С++. Пока что очень сильно помогают начальные знания управляемого DirectX.
По поводу проблемы читайте пост выше: не подключены необходимые библиотеки и заголовочные файлы.

Автор: Stas96 22.9.2009, 19:41
Цитата

До боли знакомый код!    Никак батенька Фленов!?
Я кстати тоже по нему начал изучать, так что мы с вами в одной лодке похоже плывем, может даже в ногу будем идти   , вот только я очень медленно продвигаюсь из-за незнания С++. Пока что очень сильно помогают начальные знания управляемого DirectX.
По поводу проблемы читайте пост выше: не подключены необходимые библиотеки и заголовочные файлы.

Клево у меня опыт есть токо в консольных приложениях...Да изучал раньше "Горнакова" но он занудно пишет перешел на "Фленова".

Извенете но не врубаюсь все уже перепробывал вот ошибка:

cannot open file 'd3dx9.lib'
(d3dx9.lib я подсойденил)

А если убрать d3dx9.lib то такая ошибка:


1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(81) : error C2065: 'D3DXMATRIX' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(81) : error C2146: syntax error : missing ';' before identifier 'matProjection'
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(81) : error C2065: 'matProjection' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(82) : error C2065: 'matProjection' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(82) : error C2065: 'D3DX_PI' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(82) : error C3861: 'D3DXMatrixPerspectiveFovLH': identifier not found
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(83) : error C2065: 'matProjection' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(166) : error C2065: 'D3DXMATRIX' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(166) : error C2146: syntax error : missing ';' before identifier 'matProjection'
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(166) : error C2065: 'matProjection' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(167) : error C2065: 'matProjection' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(167) : error C2065: 'D3DX_PI' : undeclared identifier
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(167) : error C3861: 'D3DXMatrixPerspectiveFovLH': identifier not found
1>e:\c++\программы\demoscenee\demoscenee\dxfunc.cpp(168) : error C2065: 'matProjection' : undeclared identifier




Автор: Stas96 22.9.2009, 20:32
И ЕЩЕ НО УЖЕ ДРУГОЙ КОД И С ДРУГОЙ ОПЕРЫ )))):
Код

/*
** Haaf's Game Engine 1.5
** Copyright (C) 2003-2004, Relish Games
** hge.relishgames.com
**
** hge_tut08 - The Big Calm
*/


// Copy the files "font2.fnt", "font2.png", "bg2.png"
// and "zazaka.png" from the folder "precompiled" to
// the folder with executable file. Also copy hge.dll
// to the same folder.


// smaller sun & moon, underwater
// moon shape, hide stars behind the moon


#include <math.h>

#include "hge.h"
#include "hgecolor.h"
#include "hgesprite.h"
#include "hgedistort.h"
#include "hgefont.h"


// Pointer to the HGE interface (helper classes require this to work)

HGE            *hge=0;
hgeFont    *fnt=0;

// Simulation constants

#define SCREEN_WIDTH    1000
#define SCREEN_HEIGHT    600
#define NUM_STARS        100
#define SEA_SUBDIVISION 16

#define SKY_HEIGHT        (SCREEN_HEIGHT*0.6f)
#define STARS_HEIGHT    (SKY_HEIGHT*0.9f)
#define ORBITS_RADIUS    (SCREEN_WIDTH*0.43f)

DWORD skyTopColors[] = {0xFF15092A, 0xFF6C6480, 0xFF89B9D0};
DWORD skyBtmColors[] = {0xFF303E57, 0xFFAC7963, 0xFFCAD7DB};
DWORD seaTopColors[] = {0xFF3D546B, 0xFF927E76, 0xFF86A2AD};
DWORD seaBtmColors[] = {0xFF1E394C, 0xFF2F4E64, 0xFF2F4E64};

int seq[]={0, 0, 1, 2, 2, 2, 1, 0, 0};

// Simulation resource handles

HTEXTURE    texObjects;

hgeSprite    *sky;
hgeSprite    *sun;
hgeSprite    *moon;
hgeSprite    *glow;
hgeSprite    *seaglow;
hgeSprite    *star;

hgeDistortionMesh *sea;

hgeColor    colWhite;

// Simulation state variables

float time;        // 0-24 hrs
float speed;    // hrs per second

int      seq_id;
float seq_residue;

float starX[NUM_STARS];  // x
float starY[NUM_STARS];  // y
float starS[NUM_STARS];  // scale
float starA[NUM_STARS];  // alpha

float seaP[SEA_SUBDIVISION]; // phase shift array

hgeColor colSkyTop;
hgeColor colSkyBtm;
hgeColor colSeaTop;
hgeColor colSeaBtm;

hgeColor colSun;
hgeColor colSunGlow;
hgeColor colMoon;
hgeColor colMoonGlow;
hgeColor colSeaGlow;

float sunX, sunY, sunS, sunGlowS;
float moonX, moonY, moonS, moonGlowS;
float seaGlowX, seaGlowSX, seaGlowSY;

// Simulation methods

bool InitSimulation();
void DoneSimulation();
void UpdateSimulation();
void RenderSimulation();


///////////////////////// Implementation ///////////////////////////


bool FrameFunc()
{
    int hrs, mins, secs;
    float tmp;
    
    // Process keys
    
    switch(hge->Input_GetKey())
    {
        case HGEK_0:        speed=0.0f; break;
        case HGEK_1:        speed=0.1f; break;
        case HGEK_2:        speed=0.2f; break;
        case HGEK_3:        speed=0.4f; break;
        case HGEK_4:        speed=0.8f; break;
        case HGEK_5:        speed=1.6f; break;
        case HGEK_6:        speed=3.2f; break;
        case HGEK_7:        speed=6.4f; break;
        case HGEK_8:        speed=12.8f; break;
        case HGEK_9:        speed=25.6f; break;
        case HGEK_ESCAPE:    return true;
    }

    // Update scene

    UpdateSimulation();

    // Calculate display time

    hrs=(int)floorf(time);
    tmp=(time-hrs)*60.0f;
    mins=(int)floorf(tmp);
    secs=(int)floorf((tmp-mins)*60.0f);

    // Render scene
    
    hge->Gfx_BeginScene();
    RenderSimulation();    
    fnt->printf (7,7, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf(7,7, L"Keys 1-9 to adjust simulation speed 0 - real time\nFPS: %d" , hge->Timer_GetFPS());
    fnt->printf(SCREEN_WIDTH-50,7,L"%02d:%02d:%02d", hrs, mins, secs);
    hge->Gfx_EndScene();

    return false;
}


int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    hge = hgeCreate(HGE_VERSION);

    // Set desired system states and initialize HGE

    hge->System_SetState(HGE_LOGFILE, "hge_tut08.log");
    hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
    hge->System_SetState(HGE_TITLE, "HGE Tutorial 08 - The Big Calm");
    hge->System_SetState(HGE_USESOUND, false);
    hge->System_SetState(HGE_WINDOWED, true);
    hge->System_SetState(HGE_SCREENWIDTH, SCREEN_WIDTH);
    hge->System_SetState(HGE_SCREENHEIGHT, SCREEN_HEIGHT);
    hge->System_SetState(HGE_SCREENBPP, 32);

    if(hge->System_Initiate())
    {
        fnt=new hgeFont("font2.fnt");
        
        if(!InitSimulation())
        {
            // If one of the data files is not found, display an error message and shutdown
            MessageBox(NULL, L"Can't load resources." L"See log for details.", L"Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
            hge->System_Shutdown();
            hge->Release();
            return 0;
        }

        hge->System_Start();

        DoneSimulation();
        delete fnt;
    }

    hge->System_Shutdown();
    hge->Release();
    return 0;
}


float GetTime()
{
    SYSTEMTIME SysTime;
    float tmp;

    GetLocalTime(&SysTime);
    tmp=SysTime.wSecond;
    tmp=SysTime.wMinute+tmp/60.0f;
    tmp=SysTime.wHour+tmp/60.0f;

    return tmp;
}


bool InitSimulation()
{
    // Load texture
    
    texObjects=hge->Texture_Load("objects.png");
    if(!texObjects) return false;

    // Create sprites

    sky=new hgeSprite(0, 0, 0, SCREEN_WIDTH, SKY_HEIGHT);
    sea=new hgeDistortionMesh(SEA_SUBDIVISION, SEA_SUBDIVISION);
    sea->SetTextureRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-SKY_HEIGHT);

    sun=new hgeSprite(texObjects,81,0,114,114);
    sun->SetHotSpot(57,57);
    moon=new hgeSprite(texObjects,0,0,81,81);
    moon->SetHotSpot(40,40);
    star=new hgeSprite(texObjects,72,81,9,9);
    star->SetHotSpot(5,5);

    glow=new hgeSprite(texObjects,128,128,128,128);
    glow->SetHotSpot(64,64);
    glow->SetBlendMode(BLEND_COLORADD | BLEND_ALPHABLEND | BLEND_NOZWRITE);
    seaglow=new hgeSprite(texObjects,128,224,128,32);
    seaglow->SetHotSpot(64,0);
    seaglow->SetBlendMode(BLEND_COLORADD | BLEND_ALPHAADD | BLEND_NOZWRITE);

    // Initialize simulation state

    colWhite.SetHWColor(0xFFFFFFFF);
    time=GetTime();
    speed=0.0f;

    for(int i=0;i<NUM_STARS;i++) // star positions
    {
        starX[i]=hge->Random_Float(0, SCREEN_WIDTH);
        starY[i]=hge->Random_Float(0, STARS_HEIGHT);
        starS[i]=hge->Random_Float(0.1f, 0.7f);
    }

    for(int i=0;i<SEA_SUBDIVISION;i++) // sea waves phase shifts
    {
        seaP[i]=i+hge->Random_Float(-15.0f, 15.0f);
    }

    // Systems are ready now!

    return true;
}



ВОТ ОШИБКИ:
"1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(145) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const wchar_t [60]' to 'int'
1>        There is no context in which this conversion is possible
1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(146) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const wchar_t [58]' to 'int'
1>        There is no context in which this conversion is possible
1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(147) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const wchar_t [15]' to 'int'
1>        There is no context in which this conversion is possible" 
Помогите пожайлусто!!!!!!

Добавлено @ 20:36
 smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile 

Автор: Andrey44 23.9.2009, 07:12
 smile 
Цитата(Stas96 @  22.9.2009,  19:41 Найти цитируемый пост)
Клево у меня опыт есть токо в консольных приложениях...
Есть ли он вообще?

Цитата(Stas96 @  22.9.2009,  20:32 Найти цитируемый пост)
Помогите пожайлусто!!!!!!
Ну так посмотри, что функция 'hgeFont::printf' принимает, какие параметры?Это можно посмотреть в *.h файле.

Автор: Stas96 23.9.2009, 14:15
Цитата

Есть ли он вообще?

есть........     smile

Добавлено @ 14:17
Цитата

Ну так посмотри, что функция 'hgeFont::printf' принимает, какие параметры?Это можно посмотреть в *.h файле.

нету...h фаила

Цитата

Клево у меня опыт есть токо в консольных приложениях...

Тоесть в командной строке...

Автор: EgoBrain 24.9.2009, 00:58
Цитата(Stas96 @ 22.9.2009,  19:41)
cannot open file 'd3dx9.lib'
(d3dx9.lib я подсойденил)

Такое ощущение, что данный файл отстутсвует по указанному тобой пути или заблокирован...

Автор: Andrey44 24.9.2009, 07:24
Цитата(Stas96 @  23.9.2009,  14:15 Найти цитируемый пост)
нету...h фаила

 smile А куда ты его дел?
Цитата(Stas96 @  23.9.2009,  14:15 Найти цитируемый пост)
Тоесть в командной строке...

Странно, а я не знал что такое консоль! smile 

Автор: Stas96 24.9.2009, 10:27
Цитата

  А куда ты его дел?

а его и не было вообще...только срр

Автор: Andrey44 24.9.2009, 11:44
Цитата(Stas96 @  24.9.2009,  10:27 Найти цитируемый пост)
а его и не было вообще...только срр 

Да? Странно, тогда посмотри в срр объявление что функция 'hgeFont::printf' принимает

Автор: Stas96 24.9.2009, 19:49
Може я не детально описал проблемму..Вот смотри:Скачал игровой движок который подключается как библиотека к Visual Studio..
Подключил...Нашел в двежке такой файл  hgefont.h вот код:
Код

/*
** Haaf's Game Engine 1.7
** Copyright (C) 2003-2007, Relish Games
** hge.relishgames.com
**
** hgeFont helper class header
*/


#ifndef HGEFONT_H
#define HGEFONT_H


#include "hge.h"
#include "hgesprite.h"


#define HGETEXT_LEFT        0
#define HGETEXT_RIGHT        1
#define HGETEXT_CENTER        2
#define HGETEXT_HORZMASK    0x03

#define HGETEXT_TOP            0
#define HGETEXT_BOTTOM        4
#define HGETEXT_MIDDLE        8
#define HGETEXT_VERTMASK    0x0C

/*
** HGE Font class
*/
class hgeFont
{
public:
    hgeFont(const char *filename, bool bMipmap=false);
    ~hgeFont();

    void        Render(float x, float y, int align, const char *string);
    void        printf(float x, float y, int align, const char *format, ...);
    void        printfb(float x, float y, float w, float h, int align, const char *format, ...);

    void        SetColor(DWORD col);
    void        SetZ(float z);
    void        SetBlendMode(int blend);
    void        SetScale(float scale) {fScale=scale;}
    void        SetProportion(float prop) { fProportion=prop; }
    void        SetRotation(float rot) {fRot=rot;}
    void        SetTracking(float tracking) {fTracking=tracking;}
    void        SetSpacing(float spacing) {fSpacing=spacing;}

    DWORD        GetColor() const {return dwCol;}
    float        GetZ() const {return fZ;}
    int            GetBlendMode() const {return nBlend;}
    float        GetScale() const {return fScale;}
    float        GetProportion() const { return fProportion; }
    float        GetRotation() const {return fRot;}
    float        GetTracking() const {return fTracking;}
    float        GetSpacing() const {return fSpacing;}

    hgeSprite*    GetSprite(char chr) const { return letters[(unsigned char)chr]; }
    float        GetPreWidth(char chr) const { return pre[(unsigned char)chr]; }
    float        GetPostWidth(char chr) const { return post[(unsigned char)chr]; }
    float        GetHeight() const { return fHeight; }
    float        GetStringWidth(const char *string, bool bMultiline=true) const;

private:
    hgeFont();
    hgeFont(const hgeFont &fnt);
    hgeFont&    operator= (const hgeFont &fnt);

    char*        _get_line(char *file, char *line);

    static HGE    *hge;

    static char    buffer[1024];

    HTEXTURE    hTexture;
    hgeSprite*    letters[256];
    float        pre[256];
    float        post[256];
    float        fHeight;
    float        fScale;
    float        fProportion;
    float        fRot;
    float        fTracking;
    float        fSpacing;

    DWORD        dwCol;
    float        fZ;
    int            nBlend;
};


#endif



а код программы я взял с сайта двежка просто я учюсь и хочю на его примере сделать что-то свое вот код срр файла:
Код

/*
** Haaf's Game Engine 1.5
** Copyright (C) 2003-2004, Relish Games
** hge.relishgames.com
**
** hge_tut08 - The Big Calm
*/


// Copy the files "font2.fnt", "font2.png", "bg2.png"
// and "zazaka.png" from the folder "precompiled" to
// the folder with executable file. Also copy hge.dll
// to the same folder.


// smaller sun & moon, underwater
// moon shape, hide stars behind the moon


#include <math.h>

#include "hge.h"
#include "hgecolor.h"
#include "hgesprite.h"
#include "hgedistort.h"
#include "hgefont.h"


// Pointer to the HGE interface (helper classes require this to work)

HGE            *hge=0;
hgeFont    *fnt=0;

// Simulation constants

#define SCREEN_WIDTH    1000
#define SCREEN_HEIGHT    600
#define NUM_STARS        100
#define SEA_SUBDIVISION 16

#define SKY_HEIGHT        (SCREEN_HEIGHT*0.6f)
#define STARS_HEIGHT    (SKY_HEIGHT*0.9f)
#define ORBITS_RADIUS    (SCREEN_WIDTH*0.43f)

DWORD skyTopColors[] = {0xFF15092A, 0xFF6C6480, 0xFF89B9D0};
DWORD skyBtmColors[] = {0xFF303E57, 0xFFAC7963, 0xFFCAD7DB};
DWORD seaTopColors[] = {0xFF3D546B, 0xFF927E76, 0xFF86A2AD};
DWORD seaBtmColors[] = {0xFF1E394C, 0xFF2F4E64, 0xFF2F4E64};

int seq[]={0, 0, 1, 2, 2, 2, 1, 0, 0};

// Simulation resource handles

HTEXTURE    texObjects;

hgeSprite    *sky;
hgeSprite    *sun;
hgeSprite    *moon;
hgeSprite    *glow;
hgeSprite    *seaglow;
hgeSprite    *star;

hgeDistortionMesh *sea;

hgeColor    colWhite;

// Simulation state variables

float time;        // 0-24 hrs
float speed;    // hrs per second

int      seq_id;
float seq_residue;

float starX[NUM_STARS];  // x
float starY[NUM_STARS];  // y
float starS[NUM_STARS];  // scale
float starA[NUM_STARS];  // alpha

float seaP[SEA_SUBDIVISION]; // phase shift array

hgeColor colSkyTop;
hgeColor colSkyBtm;
hgeColor colSeaTop;
hgeColor colSeaBtm;

hgeColor colSun;
hgeColor colSunGlow;
hgeColor colMoon;
hgeColor colMoonGlow;
hgeColor colSeaGlow;

float sunX, sunY, sunS, sunGlowS;
float moonX, moonY, moonS, moonGlowS;
float seaGlowX, seaGlowSX, seaGlowSY;

// Simulation methods

bool InitSimulation();
void DoneSimulation();
void UpdateSimulation();
void RenderSimulation();


///////////////////////// Implementation ///////////////////////////


bool FrameFunc()
{
    int hrs, mins, secs;
    float tmp;
    
    // Process keys
    
    switch(hge->Input_GetKey())
    {
        case HGEK_0:        speed=0.0f; break;
        case HGEK_1:        speed=0.1f; break;
        case HGEK_2:        speed=0.2f; break;
        case HGEK_3:        speed=0.4f; break;
        case HGEK_4:        speed=0.8f; break;
        case HGEK_5:        speed=1.6f; break;
        case HGEK_6:        speed=3.2f; break;
        case HGEK_7:        speed=6.4f; break;
        case HGEK_8:        speed=12.8f; break;
        case HGEK_9:        speed=25.6f; break;
        case HGEK_ESCAPE:    return true;
    }

    // Update scene

    UpdateSimulation();

    // Calculate display time

    hrs=(int)floorf(time);
    tmp=(time-hrs)*60.0f;
    mins=(int)floorf(tmp);
    secs=(int)floorf((tmp-mins)*60.0f);

    // Render scene
    
    hge->Gfx_BeginScene();
    RenderSimulation();    
    fnt->printf (7,7, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf (7,7, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf(SCREEN_WIDTH-50,7,L"%02d:%02d:%02d", hrs, mins, secs);
    hge->Gfx_EndScene();

    return false;
}


int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    hge = hgeCreate(HGE_VERSION);

    // Set desired system states and initialize HGE

    hge->System_SetState(HGE_LOGFILE, "hge_tut08.log");
    hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
    hge->System_SetState(HGE_TITLE, "HGE Tutorial 08 - The Big Calm");
    hge->System_SetState(HGE_USESOUND, false);
    hge->System_SetState(HGE_WINDOWED, true);
    hge->System_SetState(HGE_SCREENWIDTH, SCREEN_WIDTH);
    hge->System_SetState(HGE_SCREENHEIGHT, SCREEN_HEIGHT);
    hge->System_SetState(HGE_SCREENBPP, 32);

    if(hge->System_Initiate())
    {
        fnt=new hgeFont("font2.fnt");
        
        if(!InitSimulation())
        {
            // If one of the data files is not found, display an error message and shutdown
            MessageBox(NULL, L"Can't load resources." L"See log for details.", L"Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);
            hge->System_Shutdown();
            hge->Release();
            return 0;
        }

        hge->System_Start();

        DoneSimulation();
        delete fnt;
    }

    hge->System_Shutdown();
    hge->Release();
    return 0;
}


float GetTime()
{
    SYSTEMTIME SysTime;
    float tmp;

    GetLocalTime(&SysTime);
    tmp=SysTime.wSecond;
    tmp=SysTime.wMinute+tmp/60.0f;
    tmp=SysTime.wHour+tmp/60.0f;

    return tmp;
}


bool InitSimulation()
{
    // Load texture
    
    texObjects=hge->Texture_Load("objects.png");
    if(!texObjects) return false;

    // Create sprites

    sky=new hgeSprite(0, 0, 0, SCREEN_WIDTH, SKY_HEIGHT);
    sea=new hgeDistortionMesh(SEA_SUBDIVISION, SEA_SUBDIVISION);
    sea->SetTextureRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-SKY_HEIGHT);

    sun=new hgeSprite(texObjects,81,0,114,114);
    sun->SetHotSpot(57,57);
    moon=new hgeSprite(texObjects,0,0,81,81);
    moon->SetHotSpot(40,40);
    star=new hgeSprite(texObjects,72,81,9,9);
    star->SetHotSpot(5,5);

    glow=new hgeSprite(texObjects,128,128,128,128);
    glow->SetHotSpot(64,64);
    glow->SetBlendMode(BLEND_COLORADD | BLEND_ALPHABLEND | BLEND_NOZWRITE);
    seaglow=new hgeSprite(texObjects,128,224,128,32);
    seaglow->SetHotSpot(64,0);
    seaglow->SetBlendMode(BLEND_COLORADD | BLEND_ALPHAADD | BLEND_NOZWRITE);

    // Initialize simulation state

    colWhite.SetHWColor(0xFFFFFFFF);
    time=GetTime();
    speed=0.0f;

    for(int i=0;i<NUM_STARS;i++) // star positions
    {
        starX[i]=hge->Random_Float(0, SCREEN_WIDTH);
        starY[i]=hge->Random_Float(0, STARS_HEIGHT);
        starS[i]=hge->Random_Float(0.1f, 0.7f);
    }

    for(int i=0;i<SEA_SUBDIVISION;i++) // sea waves phase shifts
    {
        seaP[i]=i+hge->Random_Float(-15.0f, 15.0f);
    }

    // Systems are ready now!

    return true;
}



а вот ошибки:
"1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(145) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const char [60]' to 'int'
1>        There is no context in which this conversion is possible
1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(146) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const char [60]' to 'int'
1>        There is no context in which this conversion is possible
1>e:\c++\программы\hge_tut008\hge_tut008\hge.cpp(147) : error C2664: 'hgeFont::printf' : cannot convert parameter 3 from 'const wchar_t [15]' to 'int'
1>        There is no context in which this conversion is possible"
 чесно мне еще разобраться трудно очень

Автор: EgoBrain 25.9.2009, 00:55
Может быть не стоит отколонятся от темы топика? Я к тому что если вы не справились с инициализацией Direct3D и не смогли выполнить очистку устройства, то может еще рано переходить к рассмотрению движка?
З.Ы. Я бы еще посоветовал из летиратуры http://netlib.narod.ru/library/book0032/index.htm, отличная книженция, там в отличии от Фленова чувак не обламывается мат. часть преподать, а так же в приложении рассматривается создание оконного приложения WinAPI.

Автор: Stas96 25.9.2009, 09:18
Спасибо за адрес книги почитал интересная книжка......А от темы топика да я отошел мне просто интересно как это все работает а с окном я наполовину разобрался я неправельно библеотеку d3dx9 and d3d9.подключил но вылезла новая ошибка щас с нец и разбераюсь...

Автор: Andrey44 25.9.2009, 09:25
EgoBrain, это точно, Фрэнк Луна хорошо описывает.

Stas96, ты говоришь что что-то писал, а элементарных вещей не понимаешь smile 
Сравни параметры
Код

void        printf(float x, float y, int align, const char *format, ...);

а у тебя
Код

fnt->printf (7,7, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf (7,7, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf(SCREEN_WIDTH-50,7,L"%02d:%02d:%02d", hrs, mins, secs);//зачем тут L если параметр const char?????

Ну не знаю, сделай так
Код

fnt->printf (7,7,0, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf (7,7,0, "Keys 1-9 to adjust simulation speed , 0 - real time\nFPS: %d", hge->Timer_GetFPS());
    fnt->printf(SCREEN_WIDTH-50,7,0,"%02d:%02d:%02d", hrs, mins, secs);

Автор: Stas96 25.9.2009, 10:19
спасибо большое.....

Добавлено через 1 минуту и 53 секунды
еще одна ошибка щас сам разбераться буду)

Добавлено через 2 минуты и 36 секунд
хотя посмотрите:1>LINK : fatal error LNK1104: cannot open file 'LIBC.lib'

Добавлено через 2 минуты и 47 секунд
 smile  smile  smile  smile  smile 

Автор: Stas96 25.9.2009, 16:40
походу сам не разберусь....еще раз большое спасибо за оказанную помощь..
Все разобрался...

Токо когда программа запускается пишет "Can't load resources.See log for details"

все решил

Автор: Stas96 26.9.2009, 14:26
Все спасибо большое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)