Mam następujący problem. Chcę wczytać z pliku graficznego surface i wrzucić
go do back buffera. To samo w sobie nie sprawia problemu. Problemem jest
zmuszenie Directa aby uwzględnił kanał alpha.
Poniżej zamieszczam wycinki kodu:
Wczytywanie:
LPDIRECT3DSURFACE9 sBB;
m_pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &sBB);
D3DSURFACE_DESC desc;
sBB->GetDesc(&desc);
m_pd3dDevice->CreateOffscreenPlainSurface(desc.Width, desc.Height,
desc.Format, D3DPOOL_SYSTEMMEM, &fgSurface, NULL);
D3DXLoadSurfaceFromFile(fgSurface, NULL, NULL, filename, NULL, D3DX_DEFAULT,
0, NULL);
Renderowanie:
LPDIRECT3DSURFACE9 sBB;
m_pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &sBB);
D3DXLoadSurfaceFromSurface(sBB, NULL, NULL, fgSurface, NULL, NULL,
D3DX_DEFAULT, D3DCOLOR_ARGB(255,0,0,0));
Jakieś rady, sugestie?
pozdrawiam
Erge
Ale byc moze nie bedzie takiej potrzeby jednak nie mialem okazji
sprawdzic zrodla dostepnego pod tym adresem:
http://www.codesampler.com/dx9src/dx9src_4.htm#dx9_alpha_blending_framebuffer
pozdrawiam,
hollowone
witam
Zrobiłem to już za pomocą zwykłych trójkątów (przetransformowany typ
wierzchołka) i tekstury. Działa idealnie. Co ciekawe szukając w Internecie
sposobu rozwiązania tego problemu za pomocą surface'ów zauważyłem że sporo
osób też tego próbowało ale odpowiedzi nigdzie nie ma :D Cóż, chyba to
pozostanie tajemnicą Microsoftu.
pozdrawiam
Erge
Hardkorowy killer wydajnosci :). A nie lepiej utworzyc sobie teksturke i
Draw*Primitive uzyc ?. (To pytanie retoryczne - bo oczywiscie lepiej :) ).
Operacja bedzie w pelni akcelerowana, nie ma zadnych problemow z kanalem
alpha itp itd.
pozdr.
Simon