У меня в функции инициализации в программе на строке указанной ниже выдает ошибку "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);
то есть два треугольника в виде квадрата сделаны, на них наноситься текстура из файла. В чем проблема?