void MBitmapR2::DrawEx(float tx1, float ty1, float tx2, float ty2, float tx3, float ty3, float tx4, float ty4, DWORD dwColor, MDrawEffect effect) { float ftw = (float)m_pTexture->GetWidth(); float fth = (float)m_pTexture->GetHeight(); float fuv[8] = { 0.f,0.f, 1.f,0.f, 1.f,1.f, 0.f,1.f }; CheckDrawMode(fuv); CUSTOMVERTEX Sprite[4] = { #define ADJUST_SIZE 0.5f #define ADJUST_SIZE2 0.0f {tx1-ADJUST_SIZE, ty1-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[0], fuv[1]}, {tx2-ADJUST_SIZE2, ty2-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[2], fuv[3]}, {tx4-ADJUST_SIZE2, ty4-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[4], fuv[5]}, {tx3-ADJUST_SIZE, ty3-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[6], fuv[7]}, }; m_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); m_pd3dDevice->SetPixelShader(NULL); m_pd3dDevice->SetTexture(0, m_pTexture->GetTexture()); BeginState(effect); m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Sprite, sizeof(CUSTOMVERTEX)); EndState(); }
void MBitmapR2::DrawEx(float tx1, float ty1, float tx2, float ty2, float tx3, float ty3, float tx4, float ty4, DWORD dwColor, MDrawEffect effect) { if (!m_pTexture) return; // 임시로 메모리에서 내린 상태라면 복구해준다 if(m_bUnloadedTemporarily) { m_pTexture->OnRestore(); m_bUnloadedTemporarily = false; } float ftw = (float)m_pTexture->GetWidth(); float fth = (float)m_pTexture->GetHeight(); float fuv[8] = { 0.f,0.f, 1.f,0.f, 1.f,1.f, 0.f,1.f }; CheckDrawMode(fuv); CUSTOMVERTEX Sprite[4] = { #define ADJUST_SIZE 0.5f #define ADJUST_SIZE2 0.0f {tx1-ADJUST_SIZE, ty1-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[0], fuv[1]}, {tx2-ADJUST_SIZE2, ty2-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[2], fuv[3]}, {tx4-ADJUST_SIZE2, ty4-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[4], fuv[5]}, {tx3-ADJUST_SIZE, ty3-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[6], fuv[7]}, }; m_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); m_pd3dDevice->SetPixelShader(NULL); m_pd3dDevice->SetTexture(0, m_pTexture->GetTexture()); BeginState(effect); HRESULT hr = m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Sprite, sizeof(CUSTOMVERTEX)); _ASSERT(hr==D3D_OK); EndState(); }
void MBitmapR2::Draw(float x, float y, float w, float h, float sx, float sy, float sw, float sh, DWORD dwColor, MDrawEffect effect) { /* float ftw = (float)Floorer2PowerSize(m_Info.Width); float fth = (float)Floorer2PowerSize(m_Info.Height); */ float ftw = (float)m_pTexture->GetWidth(); float fth = (float)m_pTexture->GetHeight(); float fuv[8] = { (sx)/ftw ,(sy)/fth, (sx+sw)/ftw ,(sy)/fth, (sx+sw)/ftw ,(sy+sh)/fth, (sx)/ftw ,(sy+sh)/fth }; CheckDrawMode(fuv); CUSTOMVERTEX Sprite[4] = { #define ADJUST_SIZE 0.5f #define ADJUST_SIZE2 0.0f {x-ADJUST_SIZE, y-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[0], fuv[1]}, {x+w-ADJUST_SIZE2, y-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[2], fuv[3]}, {x+w-ADJUST_SIZE2, y+h-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[4], fuv[5]}, {x-ADJUST_SIZE, y+h-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[6], fuv[7]}, }; m_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); m_pd3dDevice->SetPixelShader(NULL); m_pd3dDevice->SetTexture(0, m_pTexture->GetTexture()); BeginState(effect); m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Sprite, sizeof(CUSTOMVERTEX)); EndState(); }
void MBitmapR2::Draw(float x, float y, float w, float h, float sx, float sy, float sw, float sh, DWORD dwColor, MDrawEffect effect, bool bMirrorX, bool bMirrorY) { /* float ftw = (float)Floorer2PowerSize(m_Info.Width); float fth = (float)Floorer2PowerSize(m_Info.Height); */ if(m_pTexture==NULL) return; // 임시로 메모리에서 내린 상태라면 복구해준다 if(m_bUnloadedTemporarily) { m_pTexture->OnRestore(); m_bUnloadedTemporarily = false; } float ftw = (float)m_pTexture->GetWidth(); float fth = (float)m_pTexture->GetHeight(); // 인버스 작업 float fuv[8]; // X축 인버스 if (!bMirrorX) { fuv[0] = (sx)/ftw; fuv[2] = (sx+sw)/ftw; fuv[4] = (sx+sw)/ftw; fuv[6] = (sx)/ftw; } else { fuv[2] = (sx)/ftw; fuv[0] = (sx+sw)/ftw; fuv[6] = (sx+sw)/ftw; fuv[4] = (sx)/ftw; } // Y축 인버스 if (!bMirrorY) { fuv[1] = (sy)/fth; fuv[3] = (sy)/fth; fuv[5] = (sy+sh)/fth; fuv[7] = (sy+sh)/fth; } else { fuv[7] = (sy)/fth; fuv[5] = (sy)/fth; fuv[3] = (sy+sh)/fth; fuv[1] = (sy+sh)/fth; } CheckDrawMode(fuv); CUSTOMVERTEX Sprite[4] = { #define ADJUST_SIZE 0.5f #define ADJUST_SIZE2 0.0f {x-ADJUST_SIZE, y-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[0], fuv[1]}, {x+w-ADJUST_SIZE2, y-ADJUST_SIZE, 0, 1.0f, dwColor, fuv[2], fuv[3]}, {x+w-ADJUST_SIZE2, y+h-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[4], fuv[5]}, {x-ADJUST_SIZE, y+h-ADJUST_SIZE2, 0, 1.0f, dwColor, fuv[6], fuv[7]}, }; m_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX); m_pd3dDevice->SetPixelShader(NULL); m_pd3dDevice->SetTexture(0, m_pTexture->GetTexture()); BeginState(effect); HRESULT hr = m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, Sprite, sizeof(CUSTOMVERTEX)); _ASSERT(hr==D3D_OK); EndState(); }