Cxbx-reloaded: Support progressive resolutions

Created on 28 Apr 2018  路  3Comments  路  Source: Cxbx-Reloaded/Cxbx-Reloaded

The XDK sample called "field render" renders odd and even scanlines at 60 Hz, at half resolution - get this to render correctly

HLE graphics

Most helpful comment

It's not entirely the same as interlaced, as interlaced displays still have the same backbuffer height as progressive (interlaced just needs two frame swaps to show the entire buffer, effectively halving the screen refresh rate to 30hz). The "Field render" XDK sample however uses X_D3DPRESENTFLAG_FIELD, which halves the height of the Xbox backbuffer.
On Xbox, this half-height backbuffer is displayed at 60 hz, but stretched (effectively doubling each scanline), so it still covers the entire screen.
Even frames and odd frames are drawn differently however, as they use an y offset of 0 versus 1, so that when swapping between these two types of frame ("fields"), the display is still perceived to be drawn at full resolution.

Now where's my thumbs-up for this explanation? ;)

All 3 comments

Within my viewport-scaling branch, the following fixes this issue : https://github.com/PatrickvL/Cxbx-Reloaded/commit/a08601d63150e59ba592298593dc77c4642e9ab3

I think you mean interlaced ;)

Progressive scan is normal, all pixels are displayed

Interlaced is when you alrernate rendering the odd fields and sven fields and is how non-hd television process their signal.

It's not entirely the same as interlaced, as interlaced displays still have the same backbuffer height as progressive (interlaced just needs two frame swaps to show the entire buffer, effectively halving the screen refresh rate to 30hz). The "Field render" XDK sample however uses X_D3DPRESENTFLAG_FIELD, which halves the height of the Xbox backbuffer.
On Xbox, this half-height backbuffer is displayed at 60 hz, but stretched (effectively doubling each scanline), so it still covers the entire screen.
Even frames and odd frames are drawn differently however, as they use an y offset of 0 versus 1, so that when swapping between these two types of frame ("fields"), the display is still perceived to be drawn at full resolution.

Now where's my thumbs-up for this explanation? ;)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

PatrickvL picture PatrickvL  路  3Comments

Kumoashi picture Kumoashi  路  3Comments

PatrickvL picture PatrickvL  路  3Comments

jackchentwkh picture jackchentwkh  路  3Comments

PatrickvL picture PatrickvL  路  4Comments