Lỗi khi sử dụng bộ nhớ đệm (swapbuffers)

Chào mọi người

Mình dùng hàm swapbuffers() trong thư viện graphics.h để hạn chế việc màn hình nhấp nháy khi sử dụng hàm cleardevice().

Có một vấn đề là khi chạy được khoảng 5 phút thì chương trình bị treo và không hề báo lỗi gì cả. Sau đó mình bỏ hàm swapbuffers đi thì hiện tượng treo chương trình hoàn toàn biến mất. Đây là code của mình

while(true)
	{
		iInputX	= mousey() / iSizeOfCell;
		iInputY	= mousex() / iSizeOfCell;

		for(int i = 0; i < 8; ++i){
			for(int j = 0; j < 8; ++j){
				iChessBoardSuggest[i][j] = iChessBoard[i][j];
			}
		}

		CheckSuggest_Left();
		CheckSuggest_Right();
		CheckSuggest_Up();
		CheckSuggest_Down();
		CheckSuggest_DownLeft();
		CheckSuggest_DownRight();
		CheckSuggest_UpLeft();
		CheckSuggest_UpRight();
		
		swapbuffers();
		cleardevice();

		ChessBoard(iChessBoard);
	}

Mọi người gợi ý cách khắc phục với ạ, mình cảm ơn

Mình không biết project của bạn đang làm gì. Nhưng quy trình mình từng làm với đồ họa như sau:

while (true)
{
    // clear buffer
    // updare screen info
    // render to buffer
    // swap buffer
}

Bạn thử match với code của bạn xem.
Hope this help

1 Like

Clear buffer bạn dùng : fflush(stdin) ạ

  • Mình sử dụng memset thôi.
  • Nếu bạn phải vẽ lại từng pixel thì có thể bỏ qua bước memset này, vì đằng nào khi vẽ bạn cũng sẽ ghi đè giá trị của pixel mới lên
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?