dds is just a container format which can store all kind of texture data, compressed and uncompressed and so on. So this really depends on how you save it. But I guess that there is no basic format for compressed 16bit fp textures, because of that I´d assume that your texture is uncompressed.
On bmap_lock, what format is returned?

Edit: Also, you should probably go with 32bit instead of 16, as otherwize things get quite tricky, because there is no corresponding datatype.

Something like this could then work:
Code:
#include <d3d9.h>

/* DX Lock flags */
#define D3DLOCK_READONLY 0x00000010L
#define D3DLOCK_DISCARD 0x00002000L
#define D3DLOCK_NOOVERWRITE 0x00001000L
#define D3DLOCK_NOSYSLOCK 0x00000800L
#define D3DLOCK_DONOTWAIT 0x00004000L                  
#define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L

void ReadPixels(float **pixels, BMAP* rbmap)
{
	LPDIRECT3DTEXTURE9 dxtex = rbmap->d3dtex;
	D3DLOCKED_RECT dxrect;
	unsigned char *bmp;
	
	bmap_preload(rbmap);
	dxtex->LockRect(0, &dxrect, NULL, D3DLOCK_READONLY);
	bmp = dxrect.pBits;
	
	var width = bmap_width(rbmap);
	var height = bmap_height(rbmap);
	
	*pixels = sys_malloc(width*height*sizeof(float));
	
	var x, y;
	for(y = 0; y < height; y++)
	{
		memcpy(pixels[y*width], bmp[y*dxrect.Pitch], sizeof(float*width));
	}
	
	dxtex->UnlockRect(0);
}



Last edited by Slin; 10/05/11 13:11.