E D R , A S I H C RSS

Double Buffering

™”๋ฉด˜ ด๋ฏธง€˜ ๋ณ€ฒฝ‹œ— œ๋นกž„„ —†• ๋Š” ธฐ๋ฒ•
----

1.  •˜

  • ™”๋ฉด— ธ๋ฆผ„ ธ๋ฆด๋•Œ žˆ ธ๋ฆผ„ ™”๋ฉด—๋‹ฐ–ดฃผฒŒ ๋˜๋ฉด œ๋ฐ•ฑฐ๋ฆผด ๋„ˆ๋ฌด ‹•„‹ค.
  • ธ๋ž˜„œ ™”๋ฉด— ธ๋ฆผ„ ฐ–ด„ ˜—ญณผ ๋˜‘ฐ™€ ฌธฐ˜ ฐ€ƒ˜ ๋ฒ„ผ๋ฅผ ๋งŒ๋“ค–ด„œ ฑฐธฐ๋‹ค ๋‹ฐ€๋‹Œ •œ๋ฒˆ— ™”๋ฉดœผ๋กœ ˜ฒจฃผ๋Š” ธฐ๋ฒ•ด๋‹ค.
  • •ด๋ณด๋ฉด ต‰žฅžˆ ๋ถ€๋“œ๋Ÿฝ๋‹ค.

2.  •˜2

  1. ™”๋ฉด— ธ๋ฆผ ‘ ผ๋ถ€๋ฅผ ๋ณ€ฒฝ, ด๋™ • •Œ(ณต˜ ›€งž„ ๋”ฐœ„) ธฐกด˜ ™”๋ฉด„ ผ๋ถ€ ง€šฐ  ƒˆ๋กœšด ธ๋ฆผ„ ธ๋ ••œ‹ค.
  2. ๋งŒ•ƒˆ๋กœ ธ๋ งˆ ธ๋ฆผธฐกด˜ ง€›Œงˆ ™”๋ฉด— ธ๋ „‹ค๋ฉด, ™”๋ฉด„ ๋ณด๋Š” ‚ฌšฉž๋Š” ง€›Œ„ ˆœ„„ ๋А๋ผฒŒ ๋œ‹ค.(œ๋… ˜ˆ œ ฐธ ) ด๋Ÿฐ ณต๋ฐฑ˜ ˆœ„„ —†• ธฐ œ„•˜—ฌ ƒˆ๋กœ ธ๋ งˆ ธ๋ฆผณผ ๋ฐฐฒฝ„ ๋™‹œ— ธ๋ฆฌ๋Š” ธฐ๋ฒ•ด๋‹ค.

2.1. œ๋… ˜ˆ œ

  1. ˜ˆ1) ๋”๋ธ”๋ฒ„ผ๋ง ๋ฏธ‚ฌšฉ‹œ
    ~cpp 
    โ–ฃโ–ฃโ–ฃโ–ฃโ–ฃ
    
     „ ด๋ฏธง€๋ฅผ ง€šด๋‹ค. (๋ฐฐฒฝ๋งŒ ๋‚˜˜ค๋Š” ณต๋ฐฑ ˆœ„, œ๋นกž„ œ ๋ฐœ, ˆœ„„ —†• ๋Š” ฒƒด ๋”๋ธ” ๋ฒ„ผ๋ง ๋ชฉ )
    ~cpp 
    
    ๋ณ€ฒฝ๋œ œ„˜— ธ๋ฆผ„ ธ๋ฆฐ๋‹ค.
    ~cpp 
         โ–ฃโ–ฃโ–ฃโ–ฃโ–ฃ
    
  2. ˜ˆ2) ๋”๋ธ”๋ฒ„ผ๋ง ‚ฌšฉ‹œ
    ~cpp 
    โ–ฃโ–ฃโ–ฃโ–ฃโ–ฃ
    
    ๋ฐฐฒฝณผ •˜ ธ๋ฆผ„ ธ๋ฆฐ๋‹ค.
    ~cpp 
         โ–ฃโ–ฃโ–ฃโ–ฃโ–ฃ
    

3. ธ€„ ๋‚จธฐฒŒ ๋œ œ 

  • ["Lovelyboy^_^"]ฐ€ ๋ป‘•˜๋ฉด œ๋…ผ †ŒŠค๋ฅผ ๋‚  ค๋ฒ„๋ฆฌ๋Š” œ„—˜•œ„˜ด๋„œ..--; ๋ฌธ„œ๋กœ ๋‚จฒจ๋†“œผ๋ฉด
    ๋‚˜‘— ๋‹‹œ • •Œ ๋„›€ด ๋˜ง€ •Š„นŒ๋ผ๋Š” ƒฐ--;

4. ˜ˆ œ

  •  œฐ€ ๋”๋ธ” ๋ฒ„ผ๋ง„  œ๋Œ€๋กœ •ด๋ชป–ˆ—ˆ๋”ตฐš”. ๋˜ ˜ค๋žœ๋งŒ— ๋ณด๋‹ˆนŒ  œฐ€ ๋ญ˜ จ๋…ผฑดง€๋„ ๋ชจ๋ฅด ‹ค๋Š” ..--; ๋‹‹œ ”๋‹ˆ๋‹ค. •Œนด๋…ธด๋“œฐ€ —†–ด „œ ธ๋ƒฅ ๋Œ€ถฉ ๋งŒ๋“ค–ด๋ดคŠต๋‹ˆ๋‹ค.

    ~cpp 
    class CArcanoidView : public CView
    {
    private:
    	CArcanoidDoc* pDoc;
    
    	CDC m_MemDC;                   // ๋ฉ”๋ชจ๋ฆฌ DC
    	CBitmap m_MemBitmap;           // ๋ฉ”๋ชจ๋ฆฌ ๋น„Šธ๋งต
    
    	CDC m_BackgroundDC;            // ๋ฐฐฒฝ DC
    	CBitmap m_BackgroundBitmap;    // ๋ฐฐฒฝ ๋น„Šธ๋งต
     
     	CDC m_ShuttleDC;               // ๋น„–‰ธฐ DC
             CBitmap m_ShuttleBitmap;       // ๋น„–‰ธฐ ๋น„Šธ๋งต
    ....
    ....
    
    void CArcanoidView::OnInitialUpdate()
    {
    	CView::OnInitialUpdate();
    
    	// TODO: —ฌธฐ— Šนˆ˜™”๋œ ฝ”๋“œ๋ฅผ ถ”ฐ€ ๋ฐ/๋˜๋Š” ธฐ๋ณธ ด๋ž˜Šค๋ฅผ ˜œ•ฉ๋‹ˆ๋‹ค.
    	pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    
    	CClientDC dc(this);
    	m_MemDC.CreateCompatibleDC(&dc);                      // ˜„žฌ DC™€ ˜™˜๋œ ๋ฉ”๋ชจ๋ฆฌ DC
    	m_MemBitmap.CreateCompatibleBitmap(&dc, 1000, 700);   // ˜™˜๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋น„Šธ๋งต
    	m_MemDC.SelectObject(&m_MemBitmap);
    
    	m_BackgroundBitmap.LoadBitmap(IDB_BACKGROUND);
    	m_BackgroundDC.CreateCompatibleDC(&dc);
    	m_BackgroundDC.SelectObject(&m_BackgroundBitmap);
    
    	m_ShuttleDC.CreateCompatibleDC(&dc);
    	m_ShuttleDC.SelectObject(m_ShuttleBitmap);
    }
      
  • ด๋ ‡ฒŒ ž› • ‹น ๋‹•ฃผ , ๋”๋ธ” ๋ฒ„ผ๋ง„ •˜  ‹ถ๋‹  •œ‹ค๋ฉด.. ผ๋‹จ ๋ฉ”๋ชจ๋ฆฌ DC— •„š”•œฑธ ๋‹ธ๋ฆฐ ๋‹Œ—, ™”๋ฉด DC๋กœ BitBlt •ฃผ๋Š”ฒ๋‹ˆ๋‹ค. ฒŒ ๋”๋ธ” ๋ฒ„ผ๋งธ๋ฐ..  €๋Š” ž˜๋ชป ••˜  žˆ—ˆฑฐ๋“ š”. œ๋…€ •Œ•˜ง€๋งŒ.. ๋ฌดŠจ ƒ•œ ƒฐ„ กฐธˆ ๋” •ด๋ฒ„ „œ.. ง€๋‚œ๋ฒˆ˜ ƒ•œ ฝ”๋“œฐ€ ๋‚˜˜ฒŒ ๋˜—ˆ๋˜ ฒ๋‹ˆ๋‹ค. ›—๋‚  ๋ณธธ๋„ ๋ชป •Œ•„๋ณด๋Š”..--;

    ~cpp 
    // Timerฐ€ ˜œ•˜๋Š” •ˆ˜ ๋‚ด๋ถ€
    m_MemDC.BitBlt(0,0,1000,700,&m_BackgroundDC,0,0,SRCCOPY);    // ๋ฉ”๋ชจ๋ฆฌ DC๋กœ BitBlt
    m_MemDC.BitBlt(x,y,width,height,&m_ShuttleDC,0,0,SRCCOPY);
    
    Invalidate(FALSE);
      

  • ด๋ ‡ฒŒ Timer๋‚ด๋ถ€—„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ DC—๋‹ค ๋‹ธ๋ ฃผ , Invalidate(FALSE)๋ฅผ ˜œ•ฉ๋‹ˆ๋‹ค. FALSE ฑฐ ‘š”•ฉ๋‹ˆ๋‹ค.

    ~cpp 
    // OnDraw •ˆ˜ ๋‚ด๋ถ€
    pDC->BitBlt(0,0,1000,700,&m_MemDC,0,0,SRCCOPY);  // ๋ฉ”๋ชจ๋ฆฌ DC— žˆ๋Š”ฑธ ™”๋ฉด DC๋กœ BitBlt
      

5. Thread

๋ฐธฐ: †ŒŠคฝ”๋“œ๋Š”  €๋Ÿฐ ‹œผ๋กœ •˜๋ฉด ๋” ๋ณดธฐ ‹€ ฒƒ ฐ™•„„œ  ณ๋ดค–ด. ๋ง˜— •ˆ๋“ค๋ฉด ๋‹‹œ ๋Œ๋ ค๋†“ธธ. ^^; ธ๋Ÿฐ๋ฐ ฑฐ... ณตžˆ๋Š” ˜—ญ๋งŒ ๋”๋ธ”๋ฒ„ผ๋ง •˜๋Š”ฑฐ•ผ?

["Lovelyboy^_^"]]: •—. ๋ฌดŠจ ธ๋Ÿฐ ๋ง”€„..;;  €• ณ ฃผ‹œ๋ฉด ‹ ธ. ณตด๋ž‘ ๋ง‰๋Œ€ธฐ ๋ฐฐฒฝ ˜๋ฆฌ ๋‹ค ๋”๋ธ”๋ฒ„ผ๋ง –ˆ๋Š”๋ฐ—ฌ. ฑ ˜ˆ๋ฅผ ๋“ค๋ ..;

๋ฐธฐ: ๋‚œ ™”๋ฉด  „ฒด๋ฅผ •œบผ๋ฒˆ— ๋žœ๋”๋ง•œ‹Œ— ๋ฒ„ผ๋ฅผ ๋ฐ”ฟ”ฃผ๋Š” ๋ฐฉ‹๋งŒ ๋ณด•„™”ธฐ—... ๋…Šน•˜‹  ƒฐ•˜๋Š”‘. ›€งด๋Š” ˜—ญด ๋งŽง€ •Š๋‹ค๋ฉด šจณผ ธ ๋ฐฉ๋ฒ•ธ๋“ฏ•ด. ณต„ ธ๋ ฃผ๋Š” ๋ฃจ‹CBall — žˆ๋Š”ฒƒ๋„ ๋…Šน•˜ ...

1002 : ๋”๋ธ” ๋ฒ„ผ๋ง„ •˜๋Š” œ ๋Š”, Main Memory <-> Main Memory „˜ ๋ฉ”๋ชจ๋ฆฌ๋ณต‚ฌ(Blt•˜๋Š” ฒƒ) ด Main Memory -> Video Memory „˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณต‚ฌ๋ณด๋‹ค ๋น ๋ฅดธฐ ๋•Œ๋ฌธ— •˜ .

™”๋ฉด  „ฒด๋ฅผ •œบผ๋ฒˆ— ๋ Œ๋”๋ง •œ‹Œ ๋ฒ„ผ๋ฅผ ๋ฐ”ฟ”ฃผ๋Š” ๋ฐฉ‹„ •ธฐ•˜๋Š” ฒƒ ๋ณด๋ฉด •„๋งˆ Page Fliping „ •ธฐ•˜‹œ๋Š”๋“ฏ. ๋‹จ, ฒƒ€ GDI ๋กœ๋Š” ๋ถˆฐ€๋Šฅ•˜ง€ •Š„นŒš”? ^^ DC •ธ๋“ค„ šฐ๋ฆฌฐ€ ง ‘ กฐž‘•  ˆ˜๋Š” —†๋Š” ฒƒ .. ๋ง ธ๋Œ€๋กœ, ๋ฒ„ผ๋ฅผ ๋ฐ”พผ๋‹ค๋Š” ฒƒ€ ™”๋ฉด— ‘œ‹œ•ฃผ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ฐ€๋ฆฌ‚ค๋Š” ฌ„˜ ฐ’„ ๋ฐ”พธ๋Š” ฑฐ๋‹ˆนŒ. Page Fliping € DOS๋‚˜ DX—„œ๋Š” ฐ€๋Šฅ• ง€ ๋ชฐ๋ผ๋„ GDI —„œ๋Š” ๋ถˆฐ€๋Šฅ•œ ๋ฐฉ๋ฒ•ฒƒด๋ผ๋Š” œ  ƒฐ. (DC— Select ๋˜–ดžˆ๋Š” Bitmap „‹‹œ …‹Œ…•ฃผ๋Š” ๋ฐฉ๋ฒ•€ –ด๋–จนŒ. •œ๋ฒˆ๋„ •ˆ•ด๋ดคง€๋งŒ. --;)

ธ๋ฆฌ ,  „ฒด ธ๋ฆฌธฐ ด€๋ จ ๋ฃจ‹˜ ฒฝšฐ๋Š” • ๋งค•œ๋ฐ, ™œ๋ƒ•˜๋ฉด  €๋ ‡ฒŒ object ๋ณ„๋กœ ธ๋ฆฌธฐ ๋ฃจ‹žˆ๋Š” ฒฝšฐ ‚ฌ๋žŒ๋“ค ‹ˆ˜•˜๋Š” ฒƒด.. ฐฐ˜ Draw— ๋”๋ธ”๋ฒ„ผ๋ง•˜ ˜ ๋ฉ”ธ ๋ฃจ‹ด๋ถ€๋ถ„— ๋”๋ธ”๋ฒ„ผ๋ง„ ‘๋ณต•˜๋Š” ฒฝšฐฐ€ žˆ–ด„œ๋ฆฌ.. (๋ญ. š”ƒˆ๋Š” •˜๋“œ›จ–ดฐ€ ๋นจ๋„œ ๋ณ„ †๋„  €•˜ —†ธด •œฒƒ ฐ™ง€๋งŒ.) œ œผ๋กœ๋Š” ฐฐ˜ Draw๋ถ€๋ถ„—๋Š” ผ๋ฐ˜ ธ Blt. ธ๋ฆฌ  Main ๋ถ€๋ถ„— ๋”๋ธ”๋ฒ„ผ๋ง •œ๋ฒˆด ๋งžง€ •Š„นŒ •˜๋Š”. ๋ญ.. ธ๋ƒฅ ƒฐ๋‚˜„œ ฃผ €๋ฆฌฃผ €๋ฆฌ. --;

๋ฐธฐ : ใ…‹ใ…‹, ‘œ˜„กฐธˆ ๋ฌธ œ๋ฅผ œ‚ฌ„ •Œ•˜–ดš”. ™”๋ฉด  „ฒด๋•€ ด๋–ธŠธ ˜—ญ„ –˜ธฐ•œ ฒƒ , ๋ฒ„ผ๋ฅผ ๋ฐ”พผ๋‹ค๋Š” –˜ธฐ๋Š” ฌ„ฐ๋งŒ ๋ฐ”พผ๋‹ค๋Š”ฒŒ •„‹ˆ๋ผ ๋””๋ฐ”Šค ๋ฒ„ผ ๋‚ดšฉ„ ๋ฐ”พผ๋‹ค๋Š” –˜ธฐ•œฑฐ˜ˆš”. ˆ˜•ผ, ๋‚ด • ๋งค•œ ‘œ˜„•œ— Ž˜ง€ ”Œ๋ฆฌ•‘ด๋ž‘ —ฐˆ๋ฆฌง€ ๋ง–ด. ^^;

neocoin : ฒฐ๋ก € š”˜ •˜๋“œ›จ–ด งฑ•ผ? ฑฐ•ผ?

snowflower : Œ.. ๋‚˜˜ ฒฝšฐ—”.. ™”๋ฉด  „ฒด๋ฅผ BufferDC— ธ๋ „œ ๋‚˜‘— ฑธ DC๋กœ ˜ฒผ๋Š”๋ฐ... ข€ ‹€๋ฆฐฑธนŒ?

๋ฐธฐ : ๋ณด†ต˜ ฒฝšฐ๋Š” „ ˜ฐ€ •˜๋Š” ๋ฐฉ๋ฒ•œผ๋กœ •˜ง€. ๋ Œ๋”๋ง๋˜๋Š” ณผ • „˜€ •ˆ ๋ณดด๋‹ˆนŒ...

zennith : ๋œธˆ—†๋Š” †Œ๋ฆฌ ,  ๋ฃจ•œ •ธฐ ž…๋‹ˆ๋‹ค๋งŒ, PCI ๋ž€ ธฐˆ ˜Œ †Œœ๋˜—ˆ„•Œ ฝค ๋ฏธ๋ž˜ง€–ฅ ธฐˆ ๋กœ ฐ‘๋ฐ›•˜๋˜ ฒƒด PCI bus mastering ด๋ž€ ธฐˆ ธ๋ฐ.. ๋ฌด—‡  •˜‹ˆ, pci „„๋กœ —ฐฒฐ๋˜–ดžˆ๋Š” ธฐธฐ๋“ค๋ผ๋ฆฌ „œ๋กœ˜ ๋ฉ”๋ชจ๋ฆฌ— DMA ๋ฅผ •  ˆ˜ žˆ—ˆ๋˜ ฒƒ—ˆ . ๋Œ€‘œ œผ๋กœ ธฐˆ ‚ฌšฉ๋œ ˜ˆ(๋ธฐ๋ณด๋‹ œฐ€ •Œ žˆ๋Š” ๋‹•˜๋‚˜˜ ˜ˆ)๋Š” TVˆ˜‹ นด๋“œ—„œ ‚ฌšฉ๋˜๋Š” ฒƒ—ˆ๋Š”๋ฐš”. TV –ด”Œ๋ฆฌผ€…˜—„œ TV ฐ€ ‘œ‹œ๋  ๋ถ€๋ถ„˜ region „  ••ด๋†“œผ๋ฉด TV ˆ˜‹ นด๋“œ—„œ ธ๋ถ€๋ถ„— •ด๋‹•˜๋Š” ๋น„๋””˜นด๋“œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ง ‘ ดฃผ๋Š”.. ธ๋Ÿฐ ธฐˆ —ˆ๋Š”๋ฐ.. ๋”๋ธ”๋ฒ„ผ๋ง„ ๋ณด๋‹ˆ ‘žธฐ ƒฐด ๋‚˜๋Š”ตฐš”. Œ.. š”ฆˆŒ€ ๋‹ค๋“ค agp ๋ฅผ จ„œ..  € pci bus mastering ด๋ž€ ธฐˆ •„ง๋„ ‚ด•„๋‚จ•„žˆ๋Š”ฑดง€.. ž˜ ๋ชจ๋ฅด ตฐš”.
----
™ˆŽ˜ง€๋ถ„๋ฅ˜
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:09
Processing time 0.0233 sec