Hallo 
Ich probiere mich gerade an PostProcessing Effekten unter D3D9 und habe dabei das Problem, dass ich eine berechnete Textur nicht exakt 1:1 auf den Bildschirm bekomme. Gibt es dabei einen Trick?
Die Textur hat dabei exakt die größe des Bildschirms in Pixeln (hier 1920x1080).
Ich rendere die Szene in diese Textur, wende dann 5 verschiedene Pixelshader an, die jeweils wieder in eine neue Textur gerendert werden und versuche dann die Ergebnistextur exakt auf den Bildschirm zu bringen. Hierbei kommt es zu einem leichten Zoomeffekt pro Iteration, das Bild wird also leicht unscharf.
Der relevante Quellcode um das Rechteck auf den Schirm zu bringen sieht so aus:
D3DXMatrixPerspectiveFovLH( &matProj, D3DXToRadian(45.0f ),1.0f,0.1f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3 (0.0f,0.0f,2.589), // camera position
&D3DXVECTOR3 (0.0f,0.0f,5.0f), // the look-at position
&D3DXVECTOR3 (0.0f,1.0f,0.0f)); // the up direction
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMatrixTranslation(&matTrans, 0.0f, 0.0f, 5.0f );
D3DXMatrixRotationYawPitchRoll(&matRot , 0.0f, 0.0f, 0.0f );
matWorld = matRot * matTrans;
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
"DrawQuad"
Mir ist klar, dass ich mich mit der Camera-Position von 2.589 nur angenähert habe, leider habe ich bisher kein gutes Beispiel gefunden, wie ich das ganze exakt auf den Bildschirm bringe.
Hat jemand einen guten Hinweis?
Danke!
Ich probiere mich gerade an PostProcessing Effekten unter D3D9 und habe dabei das Problem, dass ich eine berechnete Textur nicht exakt 1:1 auf den Bildschirm bekomme. Gibt es dabei einen Trick?
Die Textur hat dabei exakt die größe des Bildschirms in Pixeln (hier 1920x1080).
Ich rendere die Szene in diese Textur, wende dann 5 verschiedene Pixelshader an, die jeweils wieder in eine neue Textur gerendert werden und versuche dann die Ergebnistextur exakt auf den Bildschirm zu bringen. Hierbei kommt es zu einem leichten Zoomeffekt pro Iteration, das Bild wird also leicht unscharf.
Der relevante Quellcode um das Rechteck auf den Schirm zu bringen sieht so aus:
D3DXMatrixPerspectiveFovLH( &matProj, D3DXToRadian(45.0f ),1.0f,0.1f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3 (0.0f,0.0f,2.589), // camera position
&D3DXVECTOR3 (0.0f,0.0f,5.0f), // the look-at position
&D3DXVECTOR3 (0.0f,1.0f,0.0f)); // the up direction
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
D3DXMatrixTranslation(&matTrans, 0.0f, 0.0f, 5.0f );
D3DXMatrixRotationYawPitchRoll(&matRot , 0.0f, 0.0f, 0.0f );
matWorld = matRot * matTrans;
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
"DrawQuad"
Mir ist klar, dass ich mich mit der Camera-Position von 2.589 nur angenähert habe, leider habe ich bisher kein gutes Beispiel gefunden, wie ich das ganze exakt auf den Bildschirm bringe.
Hat jemand einen guten Hinweis?
Danke!