Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Uh-oh... Access error

This topic is 5641 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

i''ve got this code:
HRESULT InitTerrain()
    // Initialize four vertices for rendering a square {  -1.0f, -1.0f, 0.0f, 0xffffffff, 0, 1 }, // Bottom Left

	CUSTOMVERTEX m_Vertices[40000];
	char buffer[255];
    for(int x=0;x<200;x++)
		for(int z=0;z<200;z++)
			m_Vertices[(unsigned)(x*200+z)].x     = x;
			m_Vertices[(unsigned)(x*200+z)].y     = Heightmap[x][z];
			m_Vertices[(unsigned)(x*200+z)].z     = z;
			m_Vertices[(unsigned)(x*200+z)].color = 0xffffffff;
			m_Vertices[(unsigned)(x*200+z)].tu    = 1;
			m_Vertices[(unsigned)(x*200+z)].tv    = 1;

	// Initialize six indicesfor redering a square

	short g_Indices[] = { 0, 1, 3, 3, 1, 2 };

    // Create the vertex buffer.

    if( FAILED( g_pd3dDevice->CreateVertexBuffer( 40000*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pTerrainVB, NULL ) ) )
        return E_FAIL;
It gives me an access violation when CreateVertexBuffer, but when I uncomment the first line of that function (LoadHeightmap() I don''t get the access error and everything runs fine. Incase you need to know, here''s the source for LoadHeightmap
VOID LoadHeightmap()
//	MessageBox(NULL,"Loading Heightmap","D3D",MB_OK);

	//Load the heightmap

	HANDLE HeightmapImage = LoadImage(0,"C:\\heightmap.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
	HDC    HeightmapDC = CreateCompatibleDC(GetDC(GetActiveWindow()));

	for(int x=0;x<201;x++)
		for(int y=0;y<201;y++)
			//Add values into Heightmap array

			Heightmap[x][y] = GetRValue(GetPixel(HeightmapDC,x,y));
any help would be greatly appriciated. Thanks

Share this post

Link to post
Share on other sites

1. Something is overwriting your D3D device pointer - when you get the access violation in the debugger, if it stops on the CreateDevice() line in the source code rather than inside the CreateDevice code itself, check the address of all the pointers.
If "Heightmap" wasn''t allocated properly, or didn''t have space for 40401 entries (201x201), I''d say that''s the culprit for a memory trash.

2. Remember to get rid of the DC and the loaded image properly when you''ve finished with them otherwise over time your code will suck up more and more memory each time you run the program.

Simon O''Connor
ex -Creative Asylum
Programmer &
Microsoft MVP

Share this post

Link to post
Share on other sites
Looks like in my LoadHeightmap code, Heightmap wasn''t allocated with enough space
The for loops should have been "x<200" and "y<200" not 201

Share this post

Link to post
Share on other sites
I would probably add in some error checking to make sure HeightmapImage and HeightmapDC are valid.

for example
// Your stuffed.

Could be a simple problem like not loading the image.

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!