PMG

Форумы по созданию игр
Текущее время: 21 сен 2017 00:12

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка в инициализации массива точек
СообщениеДобавлено: 11 окт 2008 18:55 
Не в сети
Любитель

Зарегистрирован: 19 сен 2008 14:48
Сообщения: 43
У меня в функции инициализации в программе на строке указанной ниже выдает ошибку "Access Violation":
Код:
p_d3d_Device->CreateVertexBuffer (sizeof(g_Vertices),
      0,
      D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT,
      &p_VertexBuffer);

Причем компилирует и линкует без ошибок. Но факт в том, что я запускаю этот проект на Икс Пи Виндовс- работает без ошибок прога, когда запускаю на Вин 98 эту же прогу то выдает эту ошибку, смотрел дебаггером, именно в этом месте. Почему под Икс Пи работает код, под 98- м не работает. Предварительно сообщу, что:
Код:
           #define D3DFVF_CUSTOMVERTEX ( D3DFVF_XYZ | D3DFVF_TEX1 )
           struct CUSTOMVERTEX { float x, y, z, tu,tv; };
           LPDIRECT3D8             p_d3d        = NULL;   
           LPDIRECT3DDEVICE8       p_d3d_Device = NULL;   
           LPDIRECT3DVERTEXBUFFER8 p_VertexBuffer = NULL;      
           LPDIRECT3DTEXTURE8      textura001;         
           LPD3DXFONT pFont;                  

           p_d3d = Direct3DCreate8 (D3D_SDK_VERSION);
   
   D3DDISPLAYMODE d3ddm;
   p_d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm);
   
   D3DPRESENT_PARAMETERS   d3dpp;
   
   ZeroMemory (&d3dpp, sizeof(d3dpp));

   d3dpp.BackBufferWidth = 800;
   d3dpp.BackBufferHeight = 600;
   d3dpp.BackBufferCount = 3;
   d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate;
   d3dpp.Windowed = false;
   d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
   d3dpp.BackBufferFormat = d3ddm.Format;
   d3dpp.EnableAutoDepthStencil = true;
   d3dpp.AutoDepthStencilFormat = D3DFMT_D24X8;

   p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
      D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);

   p_VertexBuffer = NULL;

   CUSTOMVERTEX g_Vertices[] =
   {
      {  -100.0f,  -100.0f,  0.0f, 0.0f,0.0f,},
      { -100.0f,100.0f,  0.0f, 0.0f,1.0f,},
      { 100.0f,  100.0f,  0.0f, 1.0f,1.0f,},

      {  -100.0f,  -100.0f,  0.0f, 0.0f,0.0f,},
      { 100.0f,-100.0f,  0.0f, 1.0f,0.0f,},
      { 100.0f,  100.0f,  0.0f, 1.0f,1.0f,},
   };
           //на следующей строке ошибка "Access Violation"
   p_d3d_Device->CreateVertexBuffer (sizeof(g_Vertices),
      0,
      D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT,
      &p_VertexBuffer);

   VOID* pVertices;
   p_VertexBuffer->Lock (0, sizeof(g_Vertices), (BYTE**)&pVertices, 0);
   memcpy (pVertices, g_Vertices, sizeof(g_Vertices));
   p_VertexBuffer->Unlock();

   D3DXCreateTextureFromFile (p_d3d_Device, "Data/01.jpg", &textura001);

   D3DXCreateFont (p_d3d_Device, hFont, &pFont);   

то есть два треугольника в виде квадрата сделаны, на них наноситься текстура из файла. В чем проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка в инициализации массива точек
СообщениеДобавлено: 27 ноя 2008 10:27 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 11 авг 2004 17:00
Сообщения: 283
Откуда: Москва
Разница в версиях DirectX.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB