DirectX: небольшое искажение между двумя полигонами спрайта - PullRequest
0 голосов
/ 24 февраля 2011

Здравствуйте, я использую один и тот же способ для рендеринга спрайтов с DirectX в течение длительного времени, но здесь я рендерил экран в текстуре, а затем рендерил его с большим спрайтом на экране.

Для камеры Iиспользуйте это: vUpVec = D3DXVECTOR3 (0,1,0);vLookatPt = D3DXVECTOR3 (0,0,0);vFromPt = D3DXVECTOR3 (0,0, -1);

D3DXMatrixLookAtRH( &matView, &vFromPt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

D3DXMatrixOrthoRH( &matProj, 1,1, 0.5f, 20 );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

И для рендеринга спрайта: CUSTOMVERTEX * v;spritevb-> Lock (0, 0, (void **) & v, 0);

v[0].position = D3DXVECTOR3(-0.5f,-0.5f,0); v[0].u=0; v[0].v=1;
v[1].position = D3DXVECTOR3(-0.5f,0.5f,0); v[1].u=0; v[1].v=0;
v[2].position = D3DXVECTOR3(0.5f,-0.5f,0); v[2].u=1; v[2].v=1;
v[3].position = D3DXVECTOR3(0.5f,0.5f,0); v[3].u=1; v[3].v=0;

spritevb->Unlock();


g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

Это очень простой и работает, мой спрайт отображается на полном экране.Но, посмотрев поближе, я вижу, что на экране есть небольшая диагональная линия (между 2 полигонами), не цветная, но, как будто они не были идеально расположены.

Я думал о фильтрации и пытался удалить все, кромеможет быть, я что-то забыл ...

Спасибо

1 Ответ

1 голос
/ 25 февраля 2011

Лучше всего выполнить рендеринг в полноэкранный режим - не определять позиции камеры.

Если вы используете в качестве входных позиций

SimpleVertex vertices[] =
    {
        { XMFLOAT3( -1.0f, 1.0f, 0.5f ), XMFLOAT2( 0.0f, 0.0f ) },
        { XMFLOAT3( 1.0f, 1.0f, 0.5f ), XMFLOAT2( 1.0f, 0.0f ) },
        { XMFLOAT3( 1.0f, -1.0f, 0.5f ), XMFLOAT2( 1.0f, 1.0f ) },
        { XMFLOAT3( -1.0f, -1.0f, 0.5f ), XMFLOAT2( 0.0f, 1.0f ) },
    };

и в Vertex Shader, выполните

* 1007.*

Вы также получаете рендер на весь экран, не беспокоясь о просмотре.Используя это, я никогда не видел никаких линий между двумя треугольниками.

...