Forum: DirectX hjälp

Forum huvudsida -> Programmering -> DirectX hjälp

Sidor: 1

Till botten

GalenBanan 09:54 - 26:e Maj 2006 | Post #1
Medlem
Inlägg: 10


Skicka PM
Jag försöker lära mig lite DirectX. Jag håller på med en tutorial från: http://www.two-kings.de/tutorials/dxgraphics/

Jag har modifierat om koden så att man inte behöver göra alla de där valen, utan bara behöver trycka på: Start eller cancel.

Nu till problemet... Jag har börjat att försöka göra trianglar och sånt... Koden blir kompilerad och allt verkar stå rätt till, men triangeln och kvadraten syns inte! Jag tror felet ligger i main.cpp:


//includes
#include "main.h"

//globals

CApplication g_App;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MSG Message;

    LPDIRECT3DVERTEXBUFFER9 pTriangleVB = NULL;
    LPDIRECT3DVERTEXBUFFER9 pQuadVB = NULL;
    VOID* pData;

    D3DVERTEX aTriangle[] = {{-2.0f, 1.0f,10.0f,0xffff0000},
                            {-3.0f,-1.0f,10.0f,0xff00ff00},
                            {-1.0f,-1.0f,10.0f,0xff0000ff}};

    D3DVERTEX aQuad[] = {{1.0f,-1.0f,10.0f,0xffffff00},
                        {3.0f,-1.0f,10.0f,0xffffff00},
                        {1.0f, 1.0f,10.0f,0xffffff00},
                        {3.0f, 1.0f,10.0f,0xffffff00}};


    while(g_App.GetWindowStatus())
    {
        if(GetMessage(&Message, NULL, 0, 0))
        {
            if(!IsDialogMessage(g_App.GetWindowHandle(), &Message))
            {
                TranslateMessage(&Message);
                DispatchMessage(&Message);
            }
        }
    }

    if(!g_App.GetD3DStatus()) return Message.wParam;

    g_App.GetDevice()->CreateVertexBuffer(sizeof(aTriangle),
D3DUSAGE_WRITEONLY,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_MANAGED,
&pTriangleVB,
NULL);

    g_App.GetDevice()->CreateVertexBuffer(sizeof(aQuad),
D3DUSAGE_WRITEONLY,
D3DFVF_CUSTOMVERTEX,
D3DPOOL_MANAGED,
&pQuadVB,
NULL);

    pTriangleVB->Lock(0,sizeof(pData),(void**)&pData,0);
    memcpy(pData,aTriangle,sizeof(aTriangle));
    pTriangleVB->Unlock();

    pQuadVB->Lock(0,sizeof(pData),(void**)&pData,0);
    memcpy(pData,aQuad,sizeof(aQuad));
    pQuadVB->Unlock();

    while(g_App.GetD3DStatus())
    {
        if(PeekMessage(&Message, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&Message);
            DispatchMessage(&Message);
        }

        if(g_App.CheckDevice())
        {
            g_App.GetDevice()->Clear(0,
                                     NULL,
                                     D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
                                     D3DCOLOR_XRGB(0,0,0),
                                     1.0f,
                                     0);

            g_App.GetDevice()->BeginScene();

            g_App.GetDevice()->SetStreamSource(0, pTriangleVB, 0, sizeof(D3DVERTEX));
            g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

            g_App.GetDevice()->SetStreamSource(0, pQuadVB, 0, sizeof(D3DVERTEX));
            g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);

            g_App.GetDevice()->EndScene();

            g_App.GetDevice()->Present(NULL,NULL,NULL,NULL);
        }
    }

    return 0;
}



Uppskattar om någon kunnig kanske vet vad felet är... Det är inte säkert att felet ligger här, det är bara vad jag tror...

-------------------------
C++!!!



Sidor: 1

Forum huvudsida -> Programmering -> DirectX hjälp
Atom feed

Du får inte posta i den här tråden | Till toppen