ورود

View Full Version : آموزش: load کردن تصاویر DIB به داخل پوسته DirectX



dominic programmer
دوشنبه 01 شهریور 1389, 21:57 عصر
ابتدا باید در مورد تصاویر DIB بگویم که این نوع فایل تصویری یک نوع فایل گرافیکی غیر وابسته به دستگاه است و ویندوز به عنوان تصاویر بومی خود با آن رفتار می کند.این فایل شامل اندازه تصویر و تعداد رنگ های به کار رفته در آن و تعریف پیکسل ها و رنگ های هر پیکسل می باشد و ... .
این فایل ها پسوند bmp یا dib دلرند و ویندوز شامل توابع بسیاری برای کار با آن می باشد.



extern "C" IDirectDrawSurface * DDLoadBitmap(IDirectDraw *pdd,
LPCSTR szBitmap, int dx, int dy)
{
HBITMAP hbm;
BITMAP bm;
DDSURFACEDESC ddsd;
IDirectDrawSurface *pdds;

//
// This is the Win32 part.
// Try to load the bitmap as a resource.
// If that fails, try it as a file.
//
hbm = (HBITMAP)LoadImage(
GetModuleHandle(NULL), szBitmap,
IMAGE_BITMAP, dx, dy, LR_CREATEDIBSECTION);
if (hbm == NULL)
hbm = (HBITMAP)LoadImage(
NULL, szBitmap, IMAGE_BITMAP, dx, dy,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);

if (hbm == NULL)
return NULL;

//
// Get the size of the bitmap.
//
GetObject(hbm, sizeof(bm), &bm);

//
// Now, return to DirectX function calls.
// Create a DirectDrawSurface for this bitmap.
//
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT |DDSD_WIDTH;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
ddsd.dwWidth = bm.bmWidth;
ddsd.dwHeight = bm.bmHeight;
if (pdd->CreateSurface(&ddsd, &pdds, NULL) != DD_OK)
return NULL;
DDCopyBitmap(pdds, hbm, 0, 0, 0, 0);
DeleteObject(hbm);
return pdds;
}

khorzu
چهارشنبه 03 شهریور 1389, 08:41 صبح
کپی از کتاب DirectX 7 انتشارات نص.صفحه 17 .
این مطلب واقعا به درد هیچ کس نمی خوره .:ناراحت:

HRESULT D3DXLoadSurfaceFromFile(
LPDIRECT3DSURFACE9 pDestSurface,
CONST PALETTEENTRY* pDestPalette,
CONST RECT* pDestRect,
LPCTSTR pSrcFile,
CONST RECT* pSrcRect,
DWORD Filter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO* pSrcInfo
);
This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga