Member 13755707 Ответов: 0

Как мне связать, загрузить, скомпилировать шейдер для моей программы


мой код ниже мне нужно привязать шейдер к моей программе...

Мой код ниже не имеет шейдерного кода только код для моего меню 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;


Что я уже пробовал:

Я пытался связать шейдер но пока безуспешно

0 Ответов