在特定三角形Direct X 9上渲染着色器

时间:2017-05-10 23:29:43

标签: c++ directx shader

我正试图在我的三角形上运行一个像素着色器,我试图在d3d9中使用drawprimitive绘制,但是我在执行它时遇到了麻烦。

这就是我渲染三角形的方式,我只调用一次initvertexBuffer。

void DxFramework::initvertexBuffer() {
    VOID* pVertices;

    MYVERTEX Vertices[] =
    {
        { 250.0f, 100.0f, 0.5f, 1.0f, WHITE(255), }, // white with alpha of 255, this works fine.
        { 400.0f, 350.0f, 0.5f, 1.0f, WHITE(255), },
        { 100.0f, 350.0f, 0.5f, 1.0f, WHITE(255), },
    };


    if (FAILED(pDevice->CreateVertexBuffer(3 * sizeof(MYVERTEX),
        0, (D3DFVF_XYZRHW | D3DFVF_DIFFUSE),
        D3DPOOL_DEFAULT, &g_pVertexBuffer, NULL)))
    {
        return;
    }

    if (FAILED(g_pVertexBuffer->Lock(0, sizeof(Vertices), &pVertices, 0)))
    {
        return;
    }

    memcpy(pVertices, Vertices, sizeof(Vertices));

    g_pVertexBuffer->Unlock();
}

void DxFramework::rendertriangle() {

    pDevice->SetStreamSource(0, g_pVertexBuffer, 0, sizeof(MYVERTEX));
    pDevice->SetFVF((D3DFVF_XYZRHW | D3DFVF_DIFFUSE));
    pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);



}

我正在这样叫rendertriangle:

  pEffect->SetTexture("origframeTex2D", backBufferTexture);
    pEffect->SetTexture("frameTex2D", buffer2Tex);
    pEffect->Begin(&passes, 0);
    pEffect->BeginPass(3);
    rendertriangle();
    pEffect->EndPass();
    pEffect->End();

然而我的屏幕上的三角形只是黑色,虽然我知道我的着色器工作正常并且之前在整个后备缓冲器上测试了它。

此外,如果任何人都可以在d3d9着色器绘图2d上提供资源,我会很感激,因为我发现很少甚至没有资源。

0 个答案:

没有答案