Added triple buffering to GUI
This commit is contained in:
@@ -1298,7 +1298,7 @@ NEWSYM GUIWFVID, db 0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0 ; If Windo
|
|||||||
NEWSYM GUIDSIZE, db 0,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,1
|
NEWSYM GUIDSIZE, db 0,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,1
|
||||||
NEWSYM GUIRATIO, db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
NEWSYM GUIRATIO, db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
NEWSYM GUITBWVID, db 0,0,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1,0,1,0,1 ; Triple Buffering (Win)
|
NEWSYM GUITBWVID, db 0,0,0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,1 ; Triple Buffering (Win)
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
; ****************************
|
; ****************************
|
||||||
|
|||||||
@@ -155,17 +155,25 @@ void DDrawError(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" BYTE vsyncon;
|
extern "C" BYTE vsyncon;
|
||||||
|
extern "C" BYTE TripleBufferWin;
|
||||||
|
|
||||||
void DrawScreen()
|
void DrawScreen()
|
||||||
{
|
{
|
||||||
if (vsyncon == 1)
|
if (vsyncon == 1)
|
||||||
{
|
{
|
||||||
if(FullScreen == 1)
|
if(FullScreen == 1)
|
||||||
|
{
|
||||||
|
if(TripleBufferWin == 1)
|
||||||
{
|
{
|
||||||
DD_BackBuffer->Blt(NULL, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
DD_BackBuffer->Blt(NULL, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
||||||
DD_Primary->Flip(NULL, DDFLIP_WAIT);
|
DD_Primary->Flip(NULL, DDFLIP_WAIT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
DD_Primary->Blt(&rcWindow, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if(lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL) != DD_OK)
|
if(lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL) != DD_OK)
|
||||||
{
|
{
|
||||||
@@ -177,6 +185,8 @@ void DrawScreen()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(FullScreen == 1)
|
if(FullScreen == 1)
|
||||||
|
{
|
||||||
|
if(TripleBufferWin == 1)
|
||||||
{
|
{
|
||||||
DD_BackBuffer->Blt(NULL, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
DD_BackBuffer->Blt(NULL, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
||||||
DD_Primary->Flip(NULL, DDFLIP_NOVSYNC);
|
DD_Primary->Flip(NULL, DDFLIP_NOVSYNC);
|
||||||
@@ -186,6 +196,11 @@ void DrawScreen()
|
|||||||
DD_Primary->Blt(&rcWindow, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
DD_Primary->Blt(&rcWindow, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DD_Primary->Blt(&rcWindow, DD_CFB, NULL, DDBLT_WAIT, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD InputEn=0;
|
DWORD InputEn=0;
|
||||||
|
|||||||
Reference in New Issue
Block a user