Domanda

Ho un'applicazione Direct3D che corre in finestra o pieno schermo in una res fisse (ad esempio 800x600). Per supportare modalità widescreen, rendo al buffer posteriore a 800x600 e quindi utilizzare Blt per disegnare il fotogramma finale in una porzione del buffer anteriore, che è solitamente più grande (per esempio 1280x720), quindi l'immagine 800x600 è allungato per 960x720 per mantenere la proporzioni.

Questo funziona bene, tranne in qualche combinazione schede video / OS / autista (nVidia Quadro, DX11, Windows 7), dove il blit sembra essere fatto utilizzando il campionamento punto, con conseguente bordi frastagliati e un'immagine finale in generale unsmooth.

C'è un modo per evitare questo? Ad esempio, costringere Blt di utilizzare un filtro lineare quando scaling up?

(Nota: so di poter rendere le attività 800x600 originali 960x720 invece di stretching alla fine, ma che presenta altri inconvenienti, in modo che si estende alla fine è la soluzione preferita)

È stato utile?

Soluzione

Non credo che ci sia alcun modo per controllare questo. Ho letto qualcosa dicendo che questo behavour cambiato in Windows7 con alcuni driver, ma non riesco a trovare il riferimento ora.

Si potrebbe forse rendere a una texture a 800x600 e quindi disegnare un quad a schermo intero utilizzando questa texture in dimensioni reali dello schermo. Allora almeno si poteva controllare il filtraggio.

Altri suggerimenti

Avete considerato rendendo la scena per una texture e poi il rendering che texture al backbuffer allungato? Questo vi darà bilerping.

Il motivo per cui funziona su alcune macchine è che questo è esattamente come il blit sarà attuato dal driver

Per ottenere i migliori risultati, però, sei veramente betetr fuori solo il rendering al backbuffer di dimensione corretta. cioè se si desidera 1280x720 ... rendere a un 1280x720 indietro buffer con il campo appropriato di vista e di aspetto modifiche rapporto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top