Stratos: Punto de Encuentro de Desarrolladores

¡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: "AgeR"Al 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.