Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
WireFrame Chams
#1
Cóż, mam ten ładny fajny kod silnika, a mój przyjaciel może być używany jako chave do wireframe lub glass chams. Ale nie powie mi, jak to zrobić, więc zastanawiałem się, czy możecie mi pomóc. Próbowałem D3DRS_FILLMODE, D3DFILL_WIREFRAME, potem D3DFILL_SOLID zaraz po, ale pokazuje tylko solidne rzeczy przed ścianami i szkieletem z tyłu. Potem, kiedy je przełączam, cała mapa jest szkieletem. Oto kod, którego używam.       Kod:   bool bGenerateShaders = true; IDirect3DPixelShader9 * re_Red; IDirect3DPixelShader9 * re_Green; HRESULT GenerateShader (IDirect3DDevice9 * pD3Ddev, IDirect3DPixelShader9 ** pShader, float r, float g, float b, float a) {char szShader [256]; ID3DXBuffer * pShaderBuf = NULL; sprintf (szShader, "ps_3_0 \ ndef c0,% f,% f,% f,% f \ nmov oC0, c0", r, g, b, a); D3DXAssembleShader (szShader, sizeof (szShader), NULL, NULL, 0 i pShaderBuf, NULL); if (FAILED (cod4_device -> device -> CreatePixelShader ((const DWORD *) pShaderBuf -> GetBufferPointer (), pShader))) zwraca E_FAIL; return S_OK; } void (* oDrawXModelSkinnedCached) (int a1, xModel_t a2, int a3); void nDrawXModelSkinnedCached (int a1, xModel_t a2, int a3) {if (bGenerateShaders) {GenerateShader (cod4_device -> device, & re_Red, 255, 0, 0, 255); GenerateShader (cod4_device -> device, & re_Green, 0, 255, 0, 255); bGenerateShaders = false; } XModel_t * Skin = NULL; __asm mov Skin, eax cod4_device -> device -> SetRenderState (D3DRS_LIGHTING, FALSE); cod4_device -> device -> SetRenderState (D3DRS_ZENABLE, D3DZB_FALSE); cod4_device -> device -> SetRenderState (D3DRS_ZFUNC, D3DCMP_LESS); cod4_device -> device -> SetRenderState (D3DRS_FILLMODE, D3DFILL_WIREFRAME); cod4_device -> device -> SetPixelShader (re_Red); oDrawXModelSkinnedCached (a1, a2, a3); cod4_device -> device -> SetPixelShader (re_Green); cod4_device -> device -> SetRenderState (D3DRS_LIGHTING, FALSE); cod4_device -> device -> SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE); cod4_device -> device -> SetRenderState (D3DRS_ZFUNC, D3DCMP_LESS); cod4_device -> device -> SetRenderState (D3DRS_FILLMODE, D3DFILL_SOLID); // cod4_device-> device-> SetRenderState (D3DRS_FILLMODE, D3DFILL_WIREFRAME); oDrawXModelSkinnedCached (a1, a2, a3); __asm mov eax, Skin cod4_device -> device -> SetPixelShader (NULL); }   Z góry dziękuję!
Reply
#2
Sprawdź sekcję d3d, ponieważ została rozwiązana co najmniej 20x.Do niektórych badań, zanim utworzysz nowy wątek. http://www.unknowncheats.me/forum/d3d-programming/
Reply




Users browsing this thread: 1 Guest(s)