Reading Image Buffers

BlitzPlus Forums/BlitzPlus Programming/Reading Image Buffers

Could someone please explain to me, why the below snippet of code fails ?

heightmap=LoadImage("testh.bmp")
offset#=256/225
		
	For y=1 To 255
		For x=1 To 255
			a=ReadPixel(xmap#,ymap#,heightmap)
			xmap#=xmap#+offset#
		Next
	ymap#=ymap#+offset#
	xmap#=0
	Next


I'm using this in B3D to load in a pic and read off the heightmap data - but its bringing up the error 'Buffer does not exist - a=ReadPixel(xmap#,ymap#,heightmap)'

Thanks Paul.

ReadPixel (as well ReadPixelFast) need an image buffer to work with.

So you should first set the image buffer:
setbuffer imagebuffer(heightmap)

then lock the buffer with the command lockbuffer

At the end of the process, use UnlockBuffer.

Hope this helps,
Sergio.

Thanks Semar, tried the alterations.. still reporting that the buffer does not exist ?.

heightmap=LoadImage("testh.bmp")
offset#=256/225
SetBuffer ImageBuffer(heightmap)
LockBuffer heightmap

	For y=1 To 255
		For x=1 To 255
			a=ReadPixel(xmap#,ymap#,heightmap)
			xmap#=xmap#+offset#
		Next
	ymap#=ymap#+offset#
	xmap#=0
	Next
	UnlockBuffer heightmap


Now fails at the lockbuffer command. !?

Only thing i can think of is the heightmap image doesn't exist.

If only that was the problem :( it does exist.

Although I'm using Blitz3d - this wouldnt/shouldnt effect these types of image commands should it ???

another thing tho, might be unrelated

offset#=256/225


try

offset#=256.0/225.0


For some reason it gives back an integer unless you state the number as a float. I'm at college so can't test it.

heightmap=LoadImage("testh.bmp")

hBuffer = ImageBuffer(heightmap)
LockBuffer hBuffer

For y=1 To 255  ; probably want 0 to 255.
	For x=1 To 255
		a=ReadPixel(x,y,hBuffer)
		; do something with returned value
	Next
	; likewise...
Next

UnlockBuffer hBuffer


Thanks Floyd :) .. and Robs just posted up a nice link to some RGB functions in the 3d forum.

I think I was somehow getting my image and texture banks mixed up.