这是什么错误?? 我的程序编译通过,执行的时候出现“"0x00401b26"指令引用的"0x00000000"内存。该内存不能为"read"”的错误提示框,我的系统是win2000,用vc6.0请问出现上诉错误是什么原因??谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include <d3dx8.h>LPDIRECT3D8 g_pD3D = NULL;LPDIRECT3DDEVICE8 g_pD3DDevice = NULL;LPDIRECT3DVERTEXBUFFER8 g_pVertexBuffer = NULL;struct CUSTOMVERTEX{ FLOAT x, y, z; DWORD colour;};#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)#define SafeRelease(pObject) if(pObject == NULL) {pObject->Release(); pObject = NULL;}HRESULT InitialiseD3D(HWND hWnd){ g_pD3D = Direct3DCreate8(D3D_SDK_VERSION); if(g_pD3D == NULL) { return E_FAIL; } D3DDISPLAYMODE d3ddm; if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm))) { return E_FAIL; } D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC; d3dpp.BackBufferFormat = d3ddm.Format; if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pD3DDevice))) { return E_FAIL; } g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW); g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); return S_OK;}HRESULT InitialiseVertexBuffer(){ VOID* pVertices; CUSTOMVERTEX cvVertices[] = { {-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {-5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {-5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {-5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {-5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, }; if(FAILED(g_pD3DDevice->CreateVertexBuffer(18 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVertexBuffer))) { return E_FAIL; } if(FAILED(g_pVertexBuffer->Lock(0, sizeof(cvVertices), (BYTE**)&pVertices, 0))) { return E_FAIL; } memcpy(pVertices, cvVertices, sizeof(cvVertices)); g_pVertexBuffer->Unlock(); return S_OK;}void SetupRotation(){ D3DXMATRIX matWorld, matWorldX, matWorldY, matWorldZ; D3DXMatrixRotationX(&matWorldX, timeGetTime()/400.0f); D3DXMatrixRotationY(&matWorldY, timeGetTime()/400.0f); D3DXMatrixRotationZ(&matWorldZ, timeGetTime()/400.0f); D3DXMatrixMultiply(&matWorld, &matWorldX, &matWorldY); D3DXMatrixMultiply(&matWorld, &matWorld, &matWorldZ); g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);}void SetupCamera(){ D3DXMATRIX matView; D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 0.0f, -30.0f), &D3DXVECTOR3(0.0f, 0.0f, 0.0f), &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);}void SetupPerspective(){ D3DXMATRIX matProj; D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 500.0f); g_pD3DDevice->SetTransform(D3DTS_PROJECTION, &matProj);}void Render(){ if(g_pD3DDevice == NULL) { return; } g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); g_pD3DDevice->BeginScene(); SetupRotation(); SetupCamera(); SetupPerspective(); g_pD3DDevice->SetStreamSource(0, g_pVertexBuffer, sizeof(CUSTOMVERTEX)); g_pD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX); g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 4, 8); g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 14, 2); g_pD3DDevice->EndScene(); g_pD3DDevice->Present(NULL, NULL, NULL, NULL);}void ClearUp(){ SafeRelease(g_pVertexBuffer); SafeRelease(g_pD3DDevice); SafeRelease(g_pD3D);}void GameLoop(){ MSG msg; BOOL fMessage; PeekMessage(&msg, NULL, 0u, 0u, PM_NOREMOVE); while(msg.message != WM_QUIT) { fMessage = PeekMessage(&msg, NULL, 0u, 0u, PM_REMOVE); if(fMessage) { TranslateMessage(&msg); DispatchMessage(&msg); } else { Render(); } }}LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; break; case WM_KEYUP: switch(wParam) { case VK_ESCAPE: DestroyWindow(hWnd); return 0; break; } break; } return DefWindowProc(hWnd, msg, wParam, lParam);}INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT){ WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0l, 0l, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, "DX Project3", NULL}; RegisterClassEx(&wc); HWND hWnd = CreateWindow("DX Project 3", "www.andypike.com:Tutorial 3", WS_OVERLAPPEDWINDOW, 50, 50, 500, 500, GetDesktopWindow(), NULL, wc.hInstance, NULL); if(SUCCEEDED(InitialiseD3D(hWnd))) { ShowWindow(hWnd, SW_SHOWDEFAULT); UpdateWindow(hWnd); if(SUCCEEDED(InitialiseVertexBuffer())) { GameLoop(); } } ClearUp(); UnregisterClass("DX Project 3", wc.hInstance); return 0;}各位大哥帮帮忙,我真不知道咋回事了! 谁有空帮你看这么一大段代码呀,而且是D3D的,你编译成Debug版,调试(F5)运行吧,就知道哪句语句出现非法内存访问了。 求一个VC++的边缘直方图提取代码,谢谢了 打开数据库函数问题 求助csdn兄弟,帮我投一下票,到这个不适合拉票的地方拉票,马上给分~~~ 我在Tree控件上设置的图标为何都变成黑色背景? 谁能帮帮兄弟??给一个经典的winsockapi编写的网络通讯代码!!~~~~~ serialize在基于对话框的程序里总是出错,运行到ar.IsStoring是出现异常。 OpenGL建立窗口问题 初始化问题? 请问怎么把HTML文件资源显示出来???、 写二进制文件显示“?????” 关于网络阻断 对话框中是否有OnDraw() ????
LPDIRECT3DDEVICE8 g_pD3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER8 g_pVertexBuffer = NULL;struct CUSTOMVERTEX
{
FLOAT x, y, z;
DWORD colour;
};#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)#define SafeRelease(pObject) if(pObject == NULL) {pObject->Release(); pObject = NULL;}HRESULT InitialiseD3D(HWND hWnd)
{
g_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
if(g_pD3D == NULL)
{
return E_FAIL;
} D3DDISPLAYMODE d3ddm;
if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
{
return E_FAIL;
}
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC;
d3dpp.BackBufferFormat = d3ddm.Format; if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&g_pD3DDevice)))
{
return E_FAIL;
} g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); return S_OK;
}HRESULT InitialiseVertexBuffer()
{
VOID* pVertices; CUSTOMVERTEX cvVertices[] =
{
{-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),},
{-5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(255, 0, 0),},
{5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),},
{5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),},
{-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),},
{5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(0, 255, 0),},
{5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 0, 255),},
{5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, {-5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),},
{-5.0f, 5.0f, 5.0f, D3DCOLOR_XRGB(255, 0, 0),}, {-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),},
{-5.0f, 5.0f, -5.0f, D3DCOLOR_XRGB(0, 0, 255),}, {5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(0, 255, 0),},
{5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 0, 255),},
{-5.0f, -5.0f, -5.0f, D3DCOLOR_XRGB(255, 0, 0),},
{-5.0f, -5.0f, 5.0f, D3DCOLOR_XRGB(0, 255, 0),}, }; if(FAILED(g_pD3DDevice->CreateVertexBuffer(18 * sizeof(CUSTOMVERTEX),
0,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT,
&g_pVertexBuffer)))
{
return E_FAIL;
} if(FAILED(g_pVertexBuffer->Lock(0, sizeof(cvVertices),
(BYTE**)&pVertices, 0)))
{
return E_FAIL;
}
memcpy(pVertices, cvVertices, sizeof(cvVertices));
g_pVertexBuffer->Unlock();
return S_OK;
}void SetupRotation()
{
D3DXMATRIX matWorld, matWorldX, matWorldY, matWorldZ; D3DXMatrixRotationX(&matWorldX, timeGetTime()/400.0f);
D3DXMatrixRotationY(&matWorldY, timeGetTime()/400.0f);
D3DXMatrixRotationZ(&matWorldZ, timeGetTime()/400.0f); D3DXMatrixMultiply(&matWorld, &matWorldX, &matWorldY);
D3DXMatrixMultiply(&matWorld, &matWorld, &matWorldZ); g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
}void SetupCamera()
{
D3DXMATRIX matView;
D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 0.0f, -30.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);
}void SetupPerspective()
{
D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 500.0f);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION, &matProj);}void Render()
{
if(g_pD3DDevice == NULL)
{
return;
} g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET,
D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); g_pD3DDevice->BeginScene(); SetupRotation();
SetupCamera();
SetupPerspective(); g_pD3DDevice->SetStreamSource(0, g_pVertexBuffer, sizeof(CUSTOMVERTEX));
g_pD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 4, 8);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 14, 2); g_pD3DDevice->EndScene(); g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}void ClearUp()
{
SafeRelease(g_pVertexBuffer);
SafeRelease(g_pD3DDevice);
SafeRelease(g_pD3D);
}void GameLoop()
{
MSG msg;
BOOL fMessage; PeekMessage(&msg, NULL, 0u, 0u, PM_NOREMOVE);
while(msg.message != WM_QUIT)
{
fMessage = PeekMessage(&msg, NULL, 0u, 0u, PM_REMOVE);
if(fMessage)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
Render();
}
}
}LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_KEYUP:
switch(wParam)
{
case VK_ESCAPE:
DestroyWindow(hWnd);
return 0;
break;
}
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);}INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0l,
0l, GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"DX Project3", NULL};
RegisterClassEx(&wc); HWND hWnd = CreateWindow("DX Project 3", "www.andypike.com:Tutorial 3",
WS_OVERLAPPEDWINDOW, 50, 50, 500, 500,
GetDesktopWindow(), NULL, wc.hInstance, NULL); if(SUCCEEDED(InitialiseD3D(hWnd)))
{
ShowWindow(hWnd, SW_SHOWDEFAULT);
UpdateWindow(hWnd); if(SUCCEEDED(InitialiseVertexBuffer()))
{
GameLoop();
}
}
ClearUp(); UnregisterClass("DX Project 3", wc.hInstance);
return 0;
}
各位大哥帮帮忙,我真不知道咋回事了!