2009/5/26 Pavel Prochazka <[email protected]>: > +»······int i=1; > + > +»······/*it moves all backbuffers by 1 to left form id = 1, > +»······the backbuffer swap to frontbuffer and frontbuffer swaps to the end > of chain > +»······Something like this: > +»······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······------------^»··»······· > +»······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······|»······»·······»·······| > +»······|FrontBuffer| > |BackBuffer0|BackBuffer1|Backbuffer2|....|BackbufferN| > +»······ > »····»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······»·······^ > +»······»·······|---------------------------------------------------------------| > +»······»·······^ > +»······»·······|---------------------| > + > +»······»·······»·······»·······»·······»·······»·······»·······»·······»·······»······· > +»······*/ > + > +»······for(;i<This->presentParms.BackBufferCount-1;i++)· > +»······{ > +»······»·······hlp1 = (IWineD3DSurfaceImpl *)This->backBuffer[i]; > +»······»·······hlp2 = (IWineD3DSurfaceImpl *)This->backBuffer[i+1]; > +»······»·······hlp1->hDC = hlp2->hDC; > +»······»·······hlp1->dib.DIBsection = hlp2->dib.DIBsection; > +»······»·······hlp1->dib.bitmap_data = hlp2->dib.bitmap_data; > +»······»·······hlp1->resource.allocatedMemory = > hlp2->resource.allocatedMemory; > +»······»·······hlp1->dib.client_memory = hlp2->dib.client_memory; > +»······} > + > +»······hlp1 = (IWineD3DSurfaceImpl *)This->backBuffer[i]; > +»······hlp1->hDC = front->hDC; > +»······hlp1 = (IWineD3DSurfaceImpl *)This->backBuffer[i]; > +»······hlp1->dib.DIBsection = front->dib.DIBsection; > +»······hlp1->dib.bitmap_data = front->dib.bitmap_data; > +»······hlp1->resource.allocatedMemory = front->resource.allocatedMemory; > +»······hlp1->dib.client_memory = front->dib.client_memory; > +»······ > +···
Style issues aside, that's not a very efficient way to implement a swapchain.
