PMG http://forum.pmg.org.ru/ |
|
Ошибка в инициализации массива точек http://forum.pmg.org.ru/viewtopic.php?f=2&t=6711 |
Страница 1 из 1 |
Автор: | kurlyak [ 11 окт 2008 18:55 ] |
Заголовок сообщения: | Ошибка в инициализации массива точек |
У меня в функции инициализации в программе на строке указанной ниже выдает ошибку "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); то есть два треугольника в виде квадрата сделаны, на них наноситься текстура из файла. В чем проблема? |
Автор: | NetLib [ 27 ноя 2008 10:27 ] |
Заголовок сообщения: | Re: Ошибка в инициализации массива точек |
Разница в версиях DirectX. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |