Quote:Original post by hikikomori-san
With all respect, your post is full of wrong statements. You can't write directly to the front buffer
Yes you can (not in current version DX of course, it would be better if I said "you could". I see you're also seeing from a 3D prespective. I'm also taking 2D rendering in mind). See you didn't program 8-bit & 16-bit console games.
Quote:Original post by hikikomori-san
It has to either copy the contents of your back buffer to the front buffer (D3DSWAPEFFECT_COPY), or flip (swap) the buffers (D3DSWAPEFFECT_FLIP).
Thanks for finishing my explanation. ;-) I did say it wasn't complete.
Quote:Original post by hikikomori-san
This change happens regardless of how much of the old front buffer has been sent to the card, and for the rest of the screen update, the pixels that the card will send will be from the new front buffer contents, causing the upper half of the screen to display pixels from the old frame and the lower half to display pixels from the new frame
Yep. The screen is filled with mixed old & new content. This is what happened in the front-buffer-only attempt. Plus, tearing was more evident because if we rendered multiple layers, the screen was being updated when not all of the layers have finished drawing, while being mixed with old stuff from the previous frame.
This resulted in very evident tearing.
But I have to admit I wrongly stated that using Double buffering solves tearing. (by double-buffer = front+back)
But it reduces the effectIn 3D applications, there's no point in calling triple buffering to what you call double buffering, because like you say, you can't render to the front buffer directly. However this make sense for 2D-only applications. This term became popular around 1998 if I recall correctly. Plus the word "triple" sounded cooler (I'm not kidding, this is a marketing issue). And it was a performance optimization to include this option, because it seemed to boost it, but the lack of VRAM prevented many cards from benefit from it (common cards had around 4-8 MB, high-end ones could reach 16MB, or the CPU/GPU wasn't just fast enough).
Like
MS says "A tear occurs when a page flip or blt happens at the wrong time". You explained what happens when a flip occurs at the wrong time. I explained what happens when a blit is performed at the wrong time.
Here's more info (I've just googled it):
Wikipedia about triple-bufferingWikipedia about double-bufferinghttp://msdn.microsoft.com/en-us/library/ms796537.aspxCheers
Dark Sylinc