LPDIRECT3DDEVICE :: DrawPrimitiveUP только рисование в черно-белом режиме

0
struct tri_vertex 
{ 
    float x, y, z, h;
    D3DCOLOR color;
};

void Draw2DLine(float x1, float y1, float x2, float y2, D3DCOLOR dwColor)
{
    tri_vertex vertices[2] = 
    {
        x1, y1, 0.0f, 1.0f, dwColor,
        x2, y2, 0.0f, 1.0f, dwColor,
    };

    pDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, vertices, sizeof(tri_vertex));
} 


pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );
pDevice->SetRenderState( D3DRS_LIGHTING, false ); 
pDevice->SetTexture( NULL, NULL );
pDevice->SetPixelShader( NULL );

// If commented out, the block drawn is black. Otherwise its completely white.
pDevice->SetVertexShader( NULL );

// For transparency 
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
pDevice->SetRenderState(D3DRS_BLENDOP,D3DBLENDOP_ADD);

pDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);

Я пытаюсь сделать простую строку с помощью DrawPrimitiveUP(). Однако линия, нарисованная, либо полностью черная, либо белая, в зависимости от того, что SetVertexShader является нулевым. Он также не поддерживает прозрачность.

Теги:
line
primitive
direct3d

1 ответ

0

Однако нарисованная линия либо полностью черная, либо белая, в зависимости от того, что SetVertexShader является нулевым

Чего вы ожидали? цветная линия? Установили ли вы цвет линии?

Он также не поддерживает прозрачность.

Вы устанавливаете текстуру равной нулю, поэтому смесь не влияет на строку.

  • 0
    Да, цвет был установлен. Он поддерживает прозрачность в других приложениях D3D с текстурой, установленной на ноль.
  • 0
    где вы установили цвета? Я очень заинтересован в прозрачной линии, вы можете показать мне картину этого?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню