Воскресенье, 15 Сентября 2024, 01:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
redinardДата: Вторник, 09 Октября 2012, 15:26 | Сообщение # 301 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
да действительно я сейчас копирую код,но попутно в нём пытаюсь разобратся,когда я доберусь до конца книги,я буду преобразовывать этот код в движок,но пока что мне надо хотябы переписать его и убедится что он работает

Добавлено (09.10.2012, 15:26)
---------------------------------------------
никак не могу найти корректное решение это проблеммы


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 09 Октября 2012, 13:51 | Сообщение # 302 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
ОГРОМНОЕ СПАСИБО !!!

Добавлено (09.10.2012, 13:51)
---------------------------------------------
народ,помогите исправить ошибки,я всю пару пропарился и несмог понять как их исправить

Code
#pragma comment(lib, "winmm.lib")  
#pragma comment(lib, "d3d9.lib")  
#pragma comment(lib, "d3dx9.lib")
  #include <windows.h>  
  #include "d3d9.h"  
  #include <d3dx9.h>
  #include <d3dx9core.h>

  #include <mmsystem.h>//заголовочный файл для работы с системными функциями

  //***********************************************************  

   
  LPDIRECT3D9 g_pD3D = NULL; //объявление главного объекта  
  LPDIRECT3DDEVICE9 pDirect3DDevice; //объявление девайса  
  LPDIRECT3DVERTEXBUFFER9 pVertBuff = NULL; //объявление вертекс буффера
  LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL;      // Индексный буфер  
  LPD3DXFONT pFont = NULL;
  RECT Rec;
  HFONT hFont;

void LightMaterial();
void Matrix();

  struct CUSTOMVERTEX//структура определяющая формат вершин
{
         float x, y, z;//координаты вершины
         float nx,ny,nz;       //нормали
};

  #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL)//формат содержания вершин

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
//             ИНИЦИАЛИЗАЦИЯ Direct3D
//
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  HRESULT InitD3D(HWND hwnd)  
  {  
  if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) //создаётся основной указатель на интерфейс IDirect3D9
  return E_FAIL;  

  D3DDISPLAYMODE Disp; //структура для соответствия текущих установок дисплея
  if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Disp))) //получаем текущий формат дисплея
  return E_FAIL;  

  //параметры показа  
  D3DPRESENT_PARAMETERS d3dpp; //обект параметров представления Direct3DParametr
  ZeroMemory(&d3dpp, sizeof(d3dpp)); //очищает создаваемую структуру от мусора
  d3dpp.Windowed = false; //видеорежим используемый нашим приложением
  d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //параметр опредиления размеров буфера
  d3dpp.BackBufferFormat = Disp.Format; //формат поверхности заднего буфера
  d3dpp.EnableAutoDepthStencil = true;//значение показывающее возможность создания Z буфера
  d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности Z буфера
  d3dpp.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);//берём размер разрешения экрана и передаём параметрам
  d3dpp.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN);//
  d3dpp.BackBufferCount = 3;// кол-во заданных буферов  
  d3dpp.FullScreen_RefreshRateInHz = Disp.RefreshRate;//частта обновления экрана

  //создание девайса  
  if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pDirect3DDevice)))//обект интерфейса устройства
   return E_FAIL;  
  pDirect3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);//отключить отсечение
  pDirect3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);//отключить освещение Direct3D
  pDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);//включаем Z буфер

  return S_OK;  
  }  

  ///////////////////////////////////////////////////////////////////////////////////////////////////
   
   
   
   
  void RenderD3D()  
  {  
   if(pDirect3DDevice==NULL)
    return;

  pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0); //цвет фона
  pDirect3DDevice->BeginScene(); //начало сцены
//здесь происходит отрисовка сцены

Matrix();
LightMaterial();
//здесь происходит отрисовка сцены
  pDirect3DDevice->SetStreamSource(0, pVertBuff, 0, sizeof(CUSTOMVERTEX));  
  //Установка формата вершин  
  pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);  
  pDirect3DDevice->SetIndices(pBufferIndex);
  pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12); //вывод обекта
  //вывод текаста
  DrawMyText(pDirect3DDevice, hFont, "Текст в DirectX",
          10,10,500,700,D3DCOLOR_ARGB(250,250,250,50));

pDirect3DDevice->EndScene(); //конец сцены

  pDirect3DDevice->Present(NULL, NULL, NULL, NULL); //показать все  
  }  

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

   
  HRESULT InitVertBuff()  //internalObject   
     {     
     //проектируем вертексный буфер     
     CUSTOMVERTEX Vertex[] =     
     {     
      {  1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //А    
      { -1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //С    
      { -1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //В    
        
      { -1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f}, //C    
      {  1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //A    
      {  1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //D    

      { -1.0f,-1.0f, 1.0f, -1.0f,0.0f,0.0f }, //А2    
      { -1.0f, 1.0f,-1.0f, -1.0f,0.0f,0.0f }, //С2    
      { -1.0f,-1.0f,-1.0f, -1.0f,0.0f,0.0f }, //В2    
               
      { -1.0f, 1.0f,-1.0f, -1.0f,0.0f,0.0f }, //C2    
      { -1.0f,-1.0f, 1.0f, -1.0f,0.0f,0.0f }, //A2    
      { -1.0f, 1.0f, 1.0f, -1.0f,0.0f,0.0f }, //D2    
        

      {  1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //А3    
      { -1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //В3    
      { -1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f}, //С3    
                
      { -1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f }, //C3    
      {  1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f }, //D3    
      {  1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //A3    

      {  1.0f,-1.0f,-1.0f, 1.0f,0.0f,0.0f }, //А4    
      {  1.0f, 1.0f, 1.0f, 1.0f,0.0f,0.0f }, //С4    
      {  1.0f,-1.0f, 1.0f, 1.0f,0.0f,0.0f }, //В4    
       
      {  1.0f, 1.0f, 1.0f, 1.0f,0.0f,0.0f}, //C4    
      {  1.0f,-1.0f,-1.0f, 1.0f,0.0f,0.0f }, //A4    
      {  1.0f, 1.0f,-1.0f, 1.0f,0.0f,0.0f}, //D4    

      {  1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f }, //А5    
      { -1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f }, //С5    
      { -1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f}, //В5    
       
      { -1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f }, //C5    
      {  1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f }, //A5    
      {  1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f}, //D5    
       

      {  1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f }, //А6    
      { -1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f}, //В6    
      { -1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f}, //С6    
                
      { -1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f }, //C6    
      {  1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f }, //D6    
      {  1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f }, //A6    
  };    
  const unsigned short Index[]={
        0,1,2,     2,3,0,
        4,5,6,     6,7,4,
        8,9,10,    10,11,8,
        12,13,14,  14,15,12,
        16,17,18,  18,19,16,
        20,21,22,  22,23,20,
     
  };  

  // | - кол-во вершин прямо пропорционально числу перед sizeof  
  if(FAILED(pDirect3DDevice->CreateVertexBuffer(
   36*sizeof(CUSTOMVERTEX),  
   0, D3DFVF_CUSTOMVERTEX,  
   D3DPOOL_DEFAULT, &pVertBuff, NULL)))  
      return E_FAIL;  

  void *pVB; //временный указатель на указатель вертекс буфера  

    
  if(FAILED(pVertBuff->Lock(0, sizeof(Vertex), (void**)&pVB, 0))) //Блоктровка буфера
  return E_FAIL;  

  memcpy(pVB, Vertex, sizeof(Vertex)); //копирование данных  

   
  pVertBuff->Unlock(); //Разблокировка буфера  

  return S_OK;  
  }

/////////////////////////////////////////////////
VOID Matrix()
{
  D3DXMATRIX MatrixWorld,MatrixWorldX;//мировая матрица
  D3DXMATRIX MatrixWorldY,MatrixWorldZ;
     D3DXMATRIX MatrixView;//матрица вида  
     D3DXMATRIX MatrixProjection;//матрица прекции
      
  //мировая матрица

     UINT Time = timeGetTime()% 5000;
  FLOAT Angle = Time*(2.0f * D3DX_PI)/5000.0f;

  D3DXMatrixRotationY(&MatrixWorldY,Angle);
  D3DXMatrixRotationX(&MatrixWorldX,Angle);
  D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY);
  pDirect3DDevice->SetTransform(D3DTS_WORLD,&MatrixWorld);

     //матрица вида
     D3DXMatrixLookAtLH(&MatrixView,&D3DXVECTOR3(0.0f,0.0f,-8.f),
   &D3DXVECTOR3(0.0f,0.0f,0.0f),
   &D3DXVECTOR3(0.0f,1.0f,0.0f));
    pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView );
  D3DXMatrixPerspectiveFovLH(&MatrixProjection,
   D3DX_PI/4,1.0f,1.0f,100.0f);
     //матрица проекции
     pDirect3DDevice->SetTransform(D3DTS_PROJECTION,&MatrixProjection);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                    //
//    функция DrawMyText()
//    вывод текста на экран
//
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont,
     char* StrokaTexta,int x,int y,int x1,
     int y1,D3DCOLOR MyColor)
{
  //создаём шрифт
  hFont = CreateFont(30, 10, 0, 0,FW_NORMAL,FALSE,FALSE,0,1,0,
                  0, 0, DEFAULT_PITCH|FF_MODERN, "Arial");
//координаты прямоугольника
     Rec.left     = x;
  Rec.top      = y;
  Rec.right    = x1;
     Rec.bottom   = y1;
//инициализируем шрифт
  D3DXCreateFont(pDirect3DDevice, hFont, &pFont);

//начало
  pFont -> Begin();
//вывод текста
  pFont -> DrawText(StrokaTexta, -1, &Rec, DT_WORDBREAK, MyColor);

//конец
  pFont ->End();

}

VOID LightMaterial()
{
  D3DMATERIAL9 Material; //материал
  D3DLIGHT9 Light; //свет
     //установим материал
  ZeroMemory(&Material,sizeof(D3DMATERIAL9));
  Material.Diffuse.r = Material.Ambient.r = 1.0f;
  Material.Diffuse.g = Material.Ambient.g = 1.0f;
  Material.Diffuse.b = Material.Ambient.b = 0.0f;
  Material.Diffuse.a = Material.Ambient.a = 1.0f;
  pDirect3DDevice-> SetMaterial(&Material);
  D3DXVECTOR3 VectorDir;
     //установим свет
     ZeroMemory(&Light,sizeof(D3DLIGHT9));
  Light.Type = D3DLIGHT_DIRECTIONAL;
     Light.Diffuse.r = 1.0f;
  Light.Diffuse.g = 1.0f;
  Light.Diffuse.b = 1.0f;
     Light.Range     = 1000.f;
  //установим нормаль
  VectorDir = D3DXVECTOR3(0.0f,0.0f,1.0f),
     D3DXVec3Normalize((D3DXVECTOR3*)&Light.Direction,&VectorDir);
      
  pDirect3DDevice -> SetLight(0,&Light);
  pDirect3DDevice -> LightEnable(0,TRUE);

  pDirect3DDevice -> SetRenderState(D3DRS_LIGHTING,TRUE);
  pDirect3DDevice -> SetRenderState(D3DRS_AMBIENT,0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  void FreeD3D()//функция освобождает захваченные ресурсы  
  {  
  if(pVertBuff != NULL) pVertBuff->Release();  
  if(pDirect3DDevice != NULL) pDirect3DDevice->Release();  
  if(g_pD3D != NULL) g_pD3D->Release();  
  }  

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,  
  WPARAM wparam, LPARAM lparam) //здесь происходит обработка сообщений
  {  
  switch(msg)  
  {  
   {
  case WM_DESTROY:  
  FreeD3D(); //функция освобождния захваченых ресурсов
  PostQuitMessage(0);  
  break;  
  }  
  case WM_KEYDOWN:
  {
   if(wparam == VK_ESCAPE)
    PostQuitMessage(0);
   return 0;
  }

  }
  return (DefWindowProc(hwnd, msg, wparam, lparam));  
  }


Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 04 Октября 2012, 13:18 | Сообщение # 303 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
можите пожалуйста показать как это правильно сделать,потому что я делаю практичесски 1 в 1 как в книге Горнакова,но вот результат

Добавлено (04.10.2012, 13:18)
---------------------------------------------
хотя я сам приметив писал не так как в книге,пожскажите правельный индекс буфер к нему,так как проект я начал давно и на лето забросил,а теперь толком не помню что к чему


Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 04 Октября 2012, 12:29 | Сообщение # 304 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
так я просто отключу отсечение,а уменя проблемма заключается в том что осекаются лицевые грани вместо тыльных

Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 04 Октября 2012, 01:02 | Сообщение # 305 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
Всем привет,я начал разработку собственного движка для написания курсовой работы и для дальнейшего его развития,всё ишло гладко до недавна пока я не нарвался на такую проблемму,которую можете увидеть сами,вот код:
render.h
Code
#pragma comment(lib, "winmm.lib")  
#pragma comment(lib, "d3d9.lib")  
#pragma comment(lib, "d3dx9.lib")
  #include <windows.h>  
  #include "d3d9.h"  
  #include <d3dx9.h>

  #include <mmsystem.h>//заголовочный файл для работы с системными функциями

  //***********************************************************  

   
  LPDIRECT3D9 g_pD3D = NULL; //объявление главного объекта  
  LPDIRECT3DDEVICE9 pDirect3DDevice; //объявление девайса  
  LPDIRECT3DVERTEXBUFFER9 pVertBuff = NULL; //объявление вертекс буффера
  LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL;      // Индексный буфер  

void Matrix();

  struct CUSTOMVERTEX//структура определяющая формат вершин
{
         float x, y, z, rhw;//координаты вершины
         DWORD color;       //цвет вершыны
};

  #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)//формат содержания вершин

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
//             ИНИЦИАЛИЗАЦИЯ Direct3D
//
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  HRESULT InitD3D(HWND hwnd)  
  {  
  if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) //создаётся основной указатель на интерфейс IDirect3D9
  return E_FAIL;  

  D3DDISPLAYMODE Disp; //структура для соответствия текущих установок дисплея
  if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Disp))) //получаем текущий формат дисплея
  return E_FAIL;  

  //параметры показа  
  D3DPRESENT_PARAMETERS d3dpp; //обект параметров представления Direct3DParametr
  ZeroMemory(&d3dpp, sizeof(d3dpp)); //очищает создаваемую структуру от мусора
  d3dpp.Windowed = true; //видеорежим используемый нашим приложением
  d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //параметр опредиления размеров буфера
  d3dpp.BackBufferFormat = Disp.Format; //формат поверхности заднего буфера
  d3dpp.EnableAutoDepthStencil = true;//значение показывающее возможность создания Z буфера
  d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности Z буфера

  //создание девайса  
  if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pDirect3DDevice)))//обект интерфейса устройства
   return E_FAIL;  
  pDirect3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);//отключить отсечение
  pDirect3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);//отключить освещение Direct3D
  pDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);//включаем Z буфер

  return S_OK;  
  }  

  ///////////////////////////////////////////////////////////////////////////////////////////////////
   
   
   
   
  void RenderD3D()  
  {  
   if(pDirect3DDevice==NULL)
    return;

  pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0); //цвет фона
  pDirect3DDevice->BeginScene(); //начало сцены
Matrix();
//здесь происходит отрисовка сцены
  pDirect3DDevice->SetStreamSource(0, pVertBuff, 0, sizeof(CUSTOMVERTEX));  
  //Установка формата вершин  
  pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);  
  pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);  

  pDirect3DDevice->EndScene(); //конец сцены

  pDirect3DDevice->Present(NULL, NULL, NULL, NULL); //показать все  
  }  

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

  HRESULT InitVertBuff()  
  {  
  //проектируем вертексный буфер  
  CUSTOMVERTEX Vertex[] =  
  {  
  {  1.0f,-1.0f, 1.0f, 0x00000fff, }, //А
  { -1.0f,-1.0f, 1.0f, 0xff000fff, }, //В
  { -1.0f, 1.0f, 1.0f, 0x00000fff, }, //С
          
  { -1.0f, 1.0f, 1.0f, 0x00000fff, }, //C
  {  1.0f, 1.0f, 1.0f, 0xff000fff, }, //D
  {  1.0f,-1.0f, 1.0f, 0x00000fff, }, //A

         { -1.0f,-1.0f, 1.0f, 0x00000fff, }, //А2
         { -1.0f,-1.0f,-1.0f, 0x00000fff, }, //В2
         { -1.0f, 1.0f,-1.0f, 0x00000fff, }, //С2
         
         { -1.0f, 1.0f,-1.0f, 0x00000fff, }, //C2
         { -1.0f, 1.0f, 1.0f, 0x00000fff, }, //D2
         { -1.0f,-1.0f, 1.0f, 0x00000fff, }, //A2

         {  1.0f,-1.0f,-1.0f, 0xfff00000, }, //А3
         { -1.0f,-1.0f,-1.0f, 0xfff00000, }, //В3
         { -1.0f, 1.0f,-1.0f, 0xfff00000, }, //С3
          
         { -1.0f, 1.0f,-1.0f, 0xfff00000, }, //C3
         {  1.0f, 1.0f,-1.0f, 0xfff00000, }, //D3
         {  1.0f,-1.0f,-1.0f, 0xfff00000, }, //A3

   
         {  1.0f,-1.0f,-1.0f, 0x0000ffff, }, //А4
         {  1.0f,-1.0f, 1.0f, 0x0000ffff, }, //В4
         {  1.0f, 1.0f, 1.0f, 0x0000ffff, }, //С4
          
         {  1.0f, 1.0f, 1.0f, 0x0000ffff, }, //C4
         {  1.0f, 1.0f,-1.0f, 0x0000ffff, }, //D4
         {  1.0f,-1.0f,-1.0f, 0x0000ffff, }, //A4

         {  1.0f, 1.0f, 1.0f, 0x00000fff, }, //А5
         { -1.0f, 1.0f, 1.0f, 0x00000fff, }, //В5
         { -1.0f, 1.0f,-1.0f, 0x00000fff, }, //С5
          
         { -1.0f, 1.0f,-1.0f, 0x00000fff, }, //C5
         {  1.0f, 1.0f,-1.0f, 0x00000fff, }, //D5
         {  1.0f, 1.0f, 1.0f, 0x00000fff, }, //A5

         {  1.0f,-1.0f, 1.0f, 0x00000fff, }, //А6
         { -1.0f,-1.0f, 1.0f, 0x00000fff, }, //В6
         { -1.0f,-1.0f,-1.0f, 0x00000fff, }, //С6
          
         { -1.0f,-1.0f,-1.0f, 0x00000fff, }, //C6
         {  1.0f,-1.0f,-1.0f, 0x00000fff, }, //D6
         {  1.0f,-1.0f, 1.0f, 0x00000fff, }, //A6
     };
  const unsigned short Index[]={
        0,1,2,     2,3,0,
        4,5,6,     6,7,4,
        8,9,10,    10,11,8,
        12,13,14,  14,15,12,
        16,17,18,  18,19,16,
        20,21,22,  22,23,20,
     
  };  

  // | - кол-во вершин прямо пропорционально числу перед sizeof  
  if(FAILED(pDirect3DDevice->CreateVertexBuffer(
   36*sizeof(CUSTOMVERTEX),  
   0, D3DFVF_CUSTOMVERTEX,  
   D3DPOOL_DEFAULT, &pVertBuff, NULL)))  
      return E_FAIL;  

  void *pVB; //временный указатель на указатель вертекс буфера  

    
  if(FAILED(pVertBuff->Lock(0, sizeof(Vertex), (void**)&pVB, 0))) //Блоктровка буфера
  return E_FAIL;  

  memcpy(pVB, Vertex, sizeof(Vertex)); //копирование данных  

   
  pVertBuff->Unlock(); //Разблокировка буфера  

  return S_OK;  
  }

/////////////////////////////////////////////////
VOID Matrix()
{
  D3DXMATRIX MatrixWorld,MatrixWorldX;//мировая матрица
  D3DXMATRIX MatrixWorldY,MatrixWorldZ;
     D3DXMATRIX MatrixView;//матрица вида  
     D3DXMATRIX MatrixProjection;//матрица прекции
      
  //мировая матрица

     UINT Time = timeGetTime()% 5000;
  FLOAT Angle = Time*(2.0f * D3DX_PI)/5000.0f;

  D3DXMatrixRotationY(&MatrixWorldY,Angle);
  D3DXMatrixRotationX(&MatrixWorldX,Angle);
  D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY);
  pDirect3DDevice->SetTransform(D3DTS_WORLD,&MatrixWorld);

     //матрица вида
     D3DXMatrixLookAtLH(&MatrixView,&D3DXVECTOR3(0.0f,0.0f,-8.f),
   &D3DXVECTOR3(0.0f,0.0f,0.0f),
   &D3DXVECTOR3(0.0f,1.0f,0.0f));
    pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView );
  D3DXMatrixPerspectiveFovLH(&MatrixProjection,
   D3DX_PI/4,1.0f,1.0f,100.0f);
     //матрица проекции
     pDirect3DDevice->SetTransform(D3DTS_PROJECTION,&MatrixProjection);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  void FreeD3D()//функция освобождает захваченные ресурсы  
  {  
  if(pVertBuff != NULL) pVertBuff->Release();  
  if(pDirect3DDevice != NULL) pDirect3DDevice->Release();  
  if(g_pD3D != NULL) g_pD3D->Release();  
  }  

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,  
  WPARAM wparam, LPARAM lparam) //здесь происходит обработка сообщений
  {  
  switch(msg)  
  {  
  case WM_DESTROY:  
  FreeD3D(); //функция освобождния захваченых ресурсов
  PostQuitMessage(0);  
  break;  
  }  

  return (DefWindowProc(hwnd, msg, wparam, lparam));  
  }

window.cpp
Code
#include "render.h"  

  int WINAPI WinMain(HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int nCmdShow)//ГЛАВНАЯ ФУНКЦИЯ
  {  
   
  WNDCLASSEX wc; //создание класса окна  
  HWND hwnd; //создаём дискриптор окна
  MSG msg;   //идентификатор сообщения

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

           wc.cbSize = sizeof(WNDCLASSEX); // Размер всей структуры
           wc.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_DBLCLKS; //Задание стиля окн
     wc.lpfnWndProc = WndProc; //Наша функция обработки событий
           wc.cbClsExtra = 0;  
           wc.cbWndExtra = 0;  
           wc.hInstance = hInstance; //Экземпляр приложения
           wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);  
           wc.hCursor = LoadCursor(NULL, IDC_ARROW);  
           wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //цвет фона
           wc.lpszMenuName = NULL; //имя меню
           wc.lpszClassName = L"TEST_WIN32"; //Имя класса окна
           wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);  
   
  //Регистрация созданного класса  
  RegisterClassEx(&wc); // Иконка в заголовке окна
   
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  //Создание окна  
  if(!(hwnd = CreateWindowEx(
  NULL,  
  L"TEST_WIN32",    //Имя класса окна
  L"База для DirectX", // Заголовок окна
  WS_OVERLAPPEDWINDOW | WS_VISIBLE,  
  CW_USEDEFAULT, CW_USEDEFAULT, // Координаты левого верхнего угла
  800,              // Ширина окна
  600,              // Высота окна
  NULL,             // Дескриптор родительского окна
  NULL,             // Дескриптор меню
  hInstance,        // Экземпляр
  NULL)))           // Дополнительные параметры
  return 0;  

  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(SUCCEEDED(InitD3D(hwnd)))  
  {  
  if(SUCCEEDED(InitVertBuff()))  
  {  
  ShowWindow(hwnd, nCmdShow); // Вывод окна  
  UpdateWindow(hwnd); // Апдейт окна  
  ZeroMemory(&msg, sizeof(msg));  

  while(msg.message != WM_QUIT)  
  {  
  if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
  {  
  TranslateMessage(&msg); // преобразование клав. ввода  
  DispatchMessage(&msg); // обработка и пересылка сообщ. в WinProc  
  }  
  else  
  RenderD3D(); //РЕНДЕР
  }  
  }  
  }  
  return 0; //(int)(msg.wParam);  
  }
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////


подскажите где я допустил ошибку


Я белый и пушистый но имею когти и зубы
redinardДата: Понедельник, 09 Апреля 2012, 02:22 | Сообщение # 306 | Тема: вопросы по книге
постоянный участник
Сейчас нет на сайте
спасибо

Добавлено (09.04.2012, 02:22)
---------------------------------------------
народ востанавливаю эту давно забытую тему (так как наконец то разрешили размещение книги),для того чтобы посмотреть вашу критику по поводу следующей книги:книга


Я белый и пушистый но имею когти и зубы

Сообщение отредактировал redinard - Понедельник, 09 Апреля 2012, 02:24
redinardДата: Четверг, 05 Апреля 2012, 18:46 | Сообщение # 307 | Тема: [2D] Just RPG
постоянный участник
Сейчас нет на сайте
прикольно,мне нравится )

Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 05 Апреля 2012, 00:47 | Сообщение # 308 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
огромное спасибо

Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 05 Апреля 2012, 00:02 | Сообщение # 309 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
да спасибо я это уже сам понял

Добавлено (05.04.2012, 00:02)
---------------------------------------------
вот только для меня остаётся загадкой то что вместо вращающегося синего квадрата у меня чёрный экран


Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 04 Апреля 2012, 23:18 | Сообщение # 310 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Огромное спасибо, но мог бы кто нибудь помочь сделать код примерно так :

основную часть программы оставить в одном файле

а рендер запилить в другой файл


я понимаю что мне это уже показали,но хотелось бы чтобы код был примерно в таком оформлении (мне так легче его воспринимать)

Добавлено (01.04.2012, 23:09)
---------------------------------------------
извиняюсь,просмотрел бегло программу,пересмотрел её ещё раз оказывается всё так как надо и предельно понятно )

Добавлено (04.04.2012, 23:18)
---------------------------------------------
народ подскажите в чём ошибка ?





Я белый и пушистый но имею когти и зубы
redinardДата: Пятница, 30 Марта 2012, 15:57 | Сообщение # 311 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
можешь пожалуйста показать на примере рабочего кода,принцып разбиения я знаю,но реализовать мне так и не удалось

Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 29 Марта 2012, 22:57 | Сообщение # 312 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
народ,вот такой вопрос,у меня есть прога:

как мне её разбить чтобы часть кода отвечающая непосредственно за инициализацию была в этом же файле,а рендер в отдельном файле ?


Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 28 Марта 2012, 23:46 | Сообщение # 313 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
книга замечательная,но вот последние 2 примера просто напичканы ошибками

Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 28 Марта 2012, 13:16 | Сообщение # 314 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
та без разницы какую студию использовать,суть програмного кода от этого не изменится

Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 27 Марта 2012, 23:11 | Сообщение # 315 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
почитал немнго,инициализация приложения у него как то выполнена не понятно ...

Добавлено (27.03.2012, 23:11)
---------------------------------------------
Народ,назрел вот такой вопрос,у меня есть код инициализации DirectX приложения


и есть некий фрагмент кода реализующий вывод поля состоящего из тайловых блоков

как мне их обединить чтобы они зароботали ? (нубский вопрос но всё же)


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 28 Февраля 2012, 02:22 | Сообщение # 316 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Меня конкретно интересует как там реалезованно обединение 2D и 3D пространств (трёхмерные планетарные бои в побольшей части двумерной игре),и ссылка много толку не дала,движок я собираюсь писать сам,так как это будет моя курсовая.

Добавлено (28.02.2012, 02:22)
---------------------------------------------
Ну если с космичесскими рейджерами всё сложно,то не могли бы мне подсказать какую либо инфу которая поможет написать что либо подобное Diablo 2 ?


Я белый и пушистый но имею когти и зубы
redinardДата: Среда, 15 Февраля 2012, 02:05 | Сообщение # 317 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
Я всё это понимаю,на данный момент меня интереует,стоящая ли выше указанная книга ?

Добавлено (15.02.2012, 02:05)
---------------------------------------------
Народ подскажите источники информации которые могут подсказать как создать движок подобный движку игры "космичесские рейнджеры 2"


Я белый и пушистый но имею когти и зубы
redinardДата: Вторник, 31 Января 2012, 03:08 | Сообщение # 318 | Тема: [2D] - *Пока без названия*(Стратегия)
постоянный участник
Сейчас нет на сайте
Прикольно,что за двиг,своя разроботка ?

Я белый и пушистый но имею когти и зубы
redinardДата: Суббота, 28 Января 2012, 23:38 | Сообщение # 319 | Тема: [3D] One Way Ticket
постоянный участник
Сейчас нет на сайте
Игра классная,мне понравилось,но позволю себе немного критики.
спрайт огня от выстрела у пистолета немного не сходится с моделю оружия
направление дула калаша заставляет остовлять сомнения что он смотрит по направлению прицела
когда зомби отстреливаеш голову он продолжавет бежать за игроком,ну если такая задумка то хотябы надо убрать надпись хэдшот ,потому что он теряет свой функциональный смысл


Я белый и пушистый но имею когти и зубы
redinardДата: Четверг, 26 Января 2012, 20:03 | Сообщение # 320 | Тема: Необходима помощь в освоении азов создания игр
постоянный участник
Сейчас нет на сайте
на выше приведённые ошибки уже можно закрыть глаза,это проект я уже добил и его возможности меня уже не устраивают (примитивненько слишком),сейчас меня интересует материал изложеный в книге "Программирование стратегических игр с DirectX 9.0",за её изучение возьмусь недели через 2,а пока хотел бы услышать отзывы и мнение по этой книге.

Я белый и пушистый но имею когти и зубы
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг