Logo

¡Bienvenido a Stratos!

Acceder

Foros



D3dxsavesurfacetofile: Bmp, Jpg,...

Iniciado por Ruben, 05 de Mayo de 2006, 12:38:50 AM

« anterior - próximo »

Ruben

 Hola,
estoy usando la funcion D3DXSaveSurfaceToFile de Directx para grabar una superficie a fichero.

En un primer intento he usado el flag para grabar a BMP con el rectangulo asociado a la ventana de la aplicacion como tercer parametro a la funcion:


D3DXSaveSurfaceToFile(fichero, D3DXIFF_BMP, surface, NULL, &rect);


Esto funciona muy bien, con la salvedad que pesa un monton... :rolleyes:  :rolleyes:

Asi que me lo he intentado con JPG, pero no me sale la captura de la ventana solo, sino que sale desplazado el rectangulo que indica la zona a almacenar.

D3DXSaveSurfaceToFile(fichero, D3DXIFF_JPG, surface, NULL, &rect);


A ver si alguien me puede echar una mano.

Por cierto, si no pongo restricciones la imagen en jpg me sale bien.

Un saludo,
Rubén.


[EX3]

 DX9 permite grabar a otro formato que no sea BMP? En dx8 solo deja en BMP  :ph34r:

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

AgeR

 Al menos a partir de DX9 se podía guardar en jpg, no sé si antes también.

Ruben

Cita de: [EX3]DX9 permite grabar a otro formato que no sea BMP? En dx8 solo deja en BMP  :ph34r:

Salu2...
Hi,

MSDN de la funcion

Tipos soportados

Segun la MSDN, se puede grabar a todos los del enum de D3DXIMAGE_FILEFORMAT excepto el tga y otro que no me acuerdo cual era... :P


typedef enum D3DXIMAGE_FILEFORMAT
{
   D3DXIFF_BMP = 0,
   D3DXIFF_JPG = 1,
   D3DXIFF_TGA = 2,
   D3DXIFF_PNG = 3,
   D3DXIFF_DDS = 4,
   D3DXIFF_PPM = 5,
   D3DXIFF_DIB = 6,
   D3DXIFF_HDR = 7,
   D3DXIFF_PFM = 8,
   D3DXIFF_FORCE_DWORD = 0x7fffffff,
} D3DXIMAGE_FILEFORMAT, *LPD3DXIMAGE_FILEFORMAT;


Un saludo,
Rubén

[EX3]

 
Cita de: AgeRAl menos a partir de DX9 se podía guardar en jpg, no sé si antes también.
No, me temo que en DX8 solo permite BMP y DDS:
QUOTE (Referencia DirectX8 para C++ (en la doc de VB se olvidaron de comentar esta funcion ¬¬U))
D3DXSaveSurfaceToFile
Saves a surface to a file.

HRESULT D3DXSaveSurfaceToFile(
 LPCTSTR              pDestFile,
 D3DXIMAGE_FILEFORMAT DestFormat,
 LPDIRECT3DSURFACE8   pSrcSurface,
 CONST PALETTEENTRY*  pSrcPalette,
 CONST RECT*          pSrcRect
);


Parameters
pDestFile
[in] File name to save the surface to.

DestFormat
[in] D3DXIMAGE_FILEFORMAT specifying file format to use when saving.

pSrcSurface
[in] Pointer to IDirect3DSurface8 interface, containing the image to be saved.

pSrcPalette
[in] Pointer to a PALETTEENTRY structure containing a palette of 256 colors. This parameter can be NULL.

pSrcRect
[in] Pointer to a RECT structure. Specifies the source rectangle. Set this parameter to NULL to specify the entire image.

Return Values
If the function succeeds, the return value is D3D_OK.

If the function fails, the return value can be the following.

D3DERR_INVALIDCALL


Remarks
This function supports the following file formats: .bmp and .dds.

This function handles conversion to and from compressed texture formats.

This function supports both Unicode and ANSI strings.

Requirements
Header: Declared in D3dx8tex.h.
Import Library: Use D3dx8.lib.

See Also
D3DXSaveTextureToFile, D3DXSaveVolumeToFile
[/quote]
Weno, si tuviese una necesidad de hacerlo en un formato que no sea el BMP tengo por suerte una libreria externa para realizar exportaciones a otros formatos, el que no se apaña es por que no quiere :P

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.
Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.