c++ - How to load texture from file with transparent background in DirectX -


recently i've picked book , started learn game programming direct3d , directx. it's been pretty far, problem can't load texture file backbuffer transparent background color.

here source code initialize direct3d

bool init_direct3d(hwnd hwnd,int width,int height,bool fullscreen) {     // initialize direct3d object     d3d = direct3dcreate9(d3d_sdk_version);     if(d3d==null)     {         messagebox(null,text("fail initialize direct3d object"),text("error"),mb_iconerror);         return false;     }      // initialize direct3d presentation parameter     d3dpresent_parameters d3dpp;     zeromemory(&d3dpp,sizeof(d3dpp));      d3dpp.windowed = !fullscreen;     d3dpp.swapeffect = d3dswapeffect_copy;     d3dpp.backbufferformat = d3dfmt_a8r8g8b8;     d3dpp.backbuffercount = 1;     d3dpp.backbufferwidth = width;     d3dpp.backbufferheight = height;     d3dpp.hdevicewindow = hwnd;     d3dpp.enableautodepthstencil = true;     d3dpp.autodepthstencilformat = d3dfmt_d16;     d3dpp.presentationinterval = d3dpresent_interval_immediate;      d3d->createdevice(d3dadapter_default,d3ddevtype_hal,hwnd,d3dcreate_software_vertexprocessing,&d3dpp,&d3ddev);     if(d3ddev == null)     {         messagebox(null,text("fail initialize direct3d device"),text("error"),mb_iconerror);         return false;     }      d3ddev->setrenderstate(d3drs_alphablendenable,true);     d3ddev->setrenderstate(d3drs_blendop, d3dblendop_add);     d3ddev->setrenderstate(d3drs_srcblend, d3dblend_srcalpha);     d3ddev->setrenderstate(d3drs_destblend, d3dblend_invsrcalpha);      // direct3d backbuffer     d3ddev->getbackbuffer(0,null,d3dbackbuffer_type_mono,&backbuffer);     if(backbuffer == null)     {         messagebox(null,text("fail direct3d backbuffer"),text("error"),mb_iconerror);         return false;     }      return true; } 

and here code loading texture

lpdirect3dtexture9 loadtexture(char *filename,d3dcolor transcolor) {     lpdirect3dtexture9 texture = null;     d3dximage_info texture_info;     hresult result;      // image info     result = d3dxgetimageinfofromfile(filename,&texture_info);     if(result != d3d_ok)         return null;      // create texture     result = d3dxcreatetexturefromfileex(d3ddev,filename,texture_info.width,texture_info.height,1,d3dpool_default,d3dfmt_unknown,                                     d3dpool_default,d3dx_default,d3dx_default,transcolor,null,null,&texture);     if(result != d3d_ok)         return null;      return texture; } 

and how render screen

// start render if(d3ddev->beginscene()) {     d3ddev->stretchrect(back,null,backbuffer,null,d3dtexf_none);      sprite_handler->begin(d3dxsprite_alphablend);      d3dxvector3 position((float)doki.x,(float)doki.y,0.0f);      sprite_handler->draw(doki_img,&rect,null,&position,d3dcolor_xrgb(255,255,255));      sprite_handler->end();      d3ddev->endscene(); }  d3ddev->present(null,null,null,null); 

what did wrong?


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -