Как мне связать, загрузить, скомпилировать шейдер для моей программы
мой код ниже мне нужно привязать шейдер к моей программе...
Мой код ниже не имеет шейдерного кода только код для моего меню hook only 'gui interface"
#include "MenuClass.h" oReset pReset; oEndScene pEndScene; QmoMenu dMenu; LPDIRECT3DDEVICE9 g_pDevice = 0; int xFontOffSet = 15; int hackopt1; int MenuHeight = 10; int show=1; int showfps = 1; int b = 0; //========== izoon ================== int hack1 = 0; int hack2 = 0; int hack3 = 0; int hack4 = 0; int hack5 = 0; int hack6 = 0; int hack7 = 0; int hack8 = 0; int hack9 = 0; int hack10 = 0; void QmoMenu::CreateItem(int index, char * title, int *hack, int hackmaxval,int hacktype) { hackcount++; HACKITEM[hackcount].index = index; HACKITEM[hackcount].hack = hack; HACKITEM[hackcount].hackmaxval = hackmaxval; HACKITEM[hackcount].hacktype = hacktype; PrintText(title, xFontOffSet, index*17,HACKITEM[hackcount].HCOLOR,pFont); } void QmoMenu::BuildMenu(char * menuname, int x, int y, int h, int w, DWORD TITLECOL, DWORD BACKCOLOR, DWORD BORDERCOLOR, LPDIRECT3DDEVICE9 pDevice) { if(GetAsyncKeyState(VK_INSERT)&1)show=(!show); if(!show) { DrawBox(0,0, 220, 400, BACKCOLOR, BORDERCOLOR, pDevice); PrintText(menuname, x+100, y+50, BLUE, pFont); CreateItem(1,"crosair", &hack1); CreateItem(2,"wall anme", &hack2); CreateItem(3,"speed hack", &hack3); CreateItem(4,"full control", &hack4); CreateItem(5,"autokill", &hack5); CreateItem(6,"calibre p", &hack6); CreateItem(7,"calibre s", &hack7); CreateItem(8,"blalba", &hack8); CreateItem(9,"cheat9blabla", &hack9); CreateItem(10,"asdasd", &hack10); RenderMenu(); } } void QmoMenu::RenderMenu() { if(GetAsyncKeyState(VK_DOWN)&1) selector++; if(GetAsyncKeyState(VK_UP)&1) if(selector > 1) selector--; if (GetAsyncKeyState(VK_RIGHT)<0){ for(int i=0;i < (hackcount+1);i++){ if(selector == HACKITEM[i].index){ if(*HACKITEM[i].hack < HACKITEM[i].hackmaxval) *HACKITEM[i].hack += 1; } } } if (GetAsyncKeyState(VK_LEFT)<0){ for(int i=0;i < (hackcount+1);i++){ if(selector == HACKITEM[i].index){ *HACKITEM[i].hack = 0; Sleep(200); } } } for(int i=0;i < (hackcount+1);i++){ if(selector == HACKITEM[i].index) HACKITEM[i].HCOLOR = GREEN; else HACKITEM[i].HCOLOR = RED; } for(int i=1; i<(hackcount+1); i++){ if(HACKITEM[i].hacktype == 0){ if(*HACKITEM[i].hack == 1) PrintText("[ON]", xFontOffSet+150, HACKITEM[i].index*17,WHITE,pFont); else PrintText("[OFF]", xFontOffSet+150, HACKITEM[i].index*17,RED,pFont); } } if(selector < 1) selector = 1; if(selector > hackcount) selector = 1; hackcount = 0; } void CrossHair(LPDIRECT3DDEVICE9 pDevice, D3DCOLOR Color) { D3DVIEWPORT9 Viewport1; pDevice->GetViewport(&Viewport1); DWORD ScreenX = Viewport1.Width / 2; DWORD ScreenY = Viewport1.Height / 2; D3DRECT rec1 = { ScreenX - 40, ScreenY, ScreenX + 40, ScreenY + 2 }; D3DRECT rec2 = { ScreenX, ScreenY - 40, ScreenX + 2, ScreenY + 40 }; pDevice->Clear(1, &rec1, D3DCLEAR_TARGET, RED, 0, 0); pDevice->Clear(1, &rec2, D3DCLEAR_TARGET, RED, 0, 0); } void TestThread() { if( hack1 == 1) if(hack1) CrossHair(g_pDevice, RED); } void Wall () { g_pDevice->SetRenderState(D3DRS_ZENABLE,false); g_pDevice->SetRenderState(D3DRS_LIGHTING, true); g_pDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); g_pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,128,128,128)); //Wall Hack } void ReFont(LPDIRECT3DDEVICE9 pDevice) { if (g_pDevice != pDevice) { g_pDevice = pDevice; try { if (dMenu.pFont != 0) dMenu.pFont->Release(); } catch (...) {} dMenu.pFont = 0; D3DXCreateFontA(pDevice, 15, 0, FW_BOLD, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial Black", &dMenu.pFont ); } } HRESULT WINAPI Reset(IDirect3DDevice9* pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters ) { dMenu.pFont->OnLostDevice(); HRESULT hRet = pReset(pDevice, pPresentationParameters); dMenu.pFont->OnResetDevice(); return hRet; } HRESULT WINAPI EndScene(LPDIRECT3DDEVICE9 pDevice) { ReFont(pDevice); dMenu.BuildMenu("",0,0,0,0,BLUE,BLACK,GREEN,pDevice); Wall (); TestThread(); return pEndScene(pDevice); } int D3Dinit(void) { DWORD hD3D, adr, *vtbl; hD3D=0; do { hD3D = (DWORD)GetModuleHandle("d3d9.dll"); Sleep(10); } while(!hD3D); adr = FindPattern(hD3D, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx"); if (adr) { memcpy(&vtbl,(void *)(adr+2),4); pReset = (oReset) DetourFunction((PBYTE)vtbl[16] , (PBYTE)Reset ,5); pEndScene = (oEndScene) DetourFunction((PBYTE)vtbl[42], (PBYTE)EndScene,5); } return 0; } BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved ) { DisableThreadLibraryCalls(hDll); if ( dwReason == DLL_PROCESS_ATTACH ) { MessageBox(0, "Techno Tech 1", "Engine", MB_OK); CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)D3Dinit, NULL, NULL, NULL); } if( dwReason == DLL_PROCESS_DETACH) { dMenu.pFont->Release(); } return TRUE;
Что я уже пробовал:
Я пытался связать шейдер но пока безуспешно