�����

 

 

��ũ���Ͷ�?

directX�� �Ұ�

 

 

direct����,���������,������

���̷�Ʈ���ۻ��� ���ݿ� ����

 

 

���� ������ �ø���,��Ʈ�ʺ���

���̷�Ʈ �ķ�Ʈ ����

 

 

Lock,unlock,Blt,BltFast

Direct Sound

 

 

 

 

 

 

 5. ���̷�Ʈ �ķ�Ʈ ����

  ���̷�Ʈ�� �Ẹ�� �е��� 8��Ʈ(256 color) �̻��� �����Ѵٴ�
    ���� �˰� ���� �̴ϴ�. ���� ���� �÷� ���ٵ� 8��Ʈ����� ��
    ô�̳� ���ϴٰ� �Ҽ� �ִ�����~
    �翬 ���� ���ӵ��� 8��Ʈ�� ���� �ϰ� ���������� 8��Ʈ����
    ������ �����ص� �����ϱ� ��������~

    �������� �Խö��� ���� �ѵ��� 16��Ʈ Į�� ���� ���� �ϰ�
    �����ô�����~ (��...--; )

    ���̷�Ʈ���� �ķ�Ʈ�� ó���ϴ� ������ ���� ���� ������ ��
    �� ����ǥ�� ������ �Ǿ� ���ϴ�.

    +---------------------------------------------------------+
    |                �ȷ�Ʈ ���� (DDLoadPalette)              |
    +---------------------------------------------------------+
                              |
    +---------------------------------------------------------+
    |       ������ �ȷ�Ʈ�� ���� ���ۿ� ����(SetPalette)      |
    +---------------------------------------------------------+
                              |
    +---------------------------------------------------------+
    |       �̰������� �̹����� ������ ó���� �ǰ���~         |
    |     �翬 ��������Ʈ�� �ִ� �̹����� ���ϴ� ������~      |
    +---------------------------------------------------------+
                              |
    +---------------------------------------------------------+
    |       �������� �����ؾ� ����~ (DDSetColorKey)           |
    +-------

--------------------------------------------------+
                              
                < �ȷ�Ʈ ���� ��ĵ� >

    ���? ��ĵ��� ������ ���� ���ô� �е� �����? (��...)
    �׷��ٸ� �̰��¸� �о� �����ʿ� ���ڱ���~ (������~ ^^;)

    ���̷�Ʈ�� �ȷ�Ʈ ��ü�� �������� ������ �� �ֽ��ϴ�.
    ������ ����ϸ� �ɱ��? ���ݱ��� ����Ҷ� �����Ҷ��� �
    ��Ÿ���� �Լ��� �������?

    ��� CreatePalette�󱸿�~ �������~���� ������ ���߽ô�
    �е� ��ñ���~ �׷��ٸ� CreatePalette�� ������ �ȷ�Ʈ��
    � �Լ��� �̿��ؼ� ���õǾ� �����?
    ����~ �ٹ� ���߽ô� ����~ SetPalette()�Լ�!

    �о� ���� ��Ʈ���� �ȷ�Ʈ ������ �ȷ�Ʈ ��Ʈ���� ä���
    ���̷�Ʈ ��ο��� API�� CreatePalette()�Լ��� �̿��ؼ�
    �ȷ�Ʈ�� �����ϸ� �˴ϴ�.

    �ϴ� �ȷ�Ʈ�� �о� ���϶���

    LPDIRECTDRAWPALETTE lpPalette;
    .....
    .....(��¼�� ��¼��...)
    lpPalette = DDLoadPalette(lpDD, "Palette");
    //���⼭ "Palette"�� Palette.bmp�� ���մϴ�.
    .....
    .....(��¼�� ��¼��...)

    �׷��ٸ� ���뿡�� CreatePalette() �Լ��� � ���ΰ�?
    ����ü � ���̱淡? �ñ��Ͻ���~ �ѹ� ���� ����~

    =======================================================
    HRESULT CreatePalette(
           LPDIRECTDRAW lpDD,
           DWORD dwFlags,
           LPPALETTEENTRY lpColorTable,
           LPDIRECTDRAWPALETTE FAR *lplpDDPlaette,
           lUnknown FAR *pUnkOuter )
        =======================================================
        �Լ� ���� ���� :

        lpDD    : DirectDraw ��ü�� ���� ������
        dwFlags : �÷� ��Ʈ���� ������ ���̷�Ʈ�� �����ϱ�
                  ���� �Ű� ����
        lpColorTable : RGB��Ʈ���� ���� �Ű�����
        pUnkOuter : ���� NULL���� ����
  
    DDLoadPalette()�Լ� ���� CreatePalette()�Լ��� dwFlags��
    DDPCAPS_8BIT�� 256���� ���� ������ �����մϴ�. ���� 16
    ��Ʈ�� �ϰ��� �Ѵٸ� 8BIT��� 16BIT�� �ֽø� �ǰ���~
    �Ϲ������� ���� ������ �ȷ�Ʈ�� �����ϸ�
    DDSCL_EXCLUSIVEMODE�÷�ũ�� DDSCK_FULLSCREEN �÷��� ����
    �Ǿ� �ִٸ� GDI�ȷ�Ʈ ���� �����ϴ�.

    ������ ���̷�Ʈ �ҽ��� �ִ� �ķ�Ʈ ó���ϴ� �Լ��� �ҽ�
    �Դϴ�. ���ڰ� ���� �̺κ��� �ҽ��� �����Ƿ� �ִ� ������
  ��ü �ϰڽ��ϴ�. ���ô� �е鲲 ���� ��Ź�帳�ϴ�.

//
//  DDLoadPalette �Լ�
//
//  ��Ʈ���� �ķ�Ʈ�� ���̷�Ʈ ��ο쿡 �����ϴ� �Լ�
//
//  ���� �ķ�Ʈ ������ ���ų� NULL�̸� ������ ����Ʈ�� �մϴ�.
//  ( 332 palette ? )
//
extern "C" IDirectDrawPalette * DDLoadPalette(IDirectDraw *pdd,
                                              LPCSTR szBitmap)
{
    IDirectDrawPalette* ddpal;
    int                 i;
    int                 n;
    int                 fh;
    HRSRC               h;
    LPBITMAPINFOHEADER  lpbi;       // ��Ʈ�� ���
    PALETTEENTRY        ape[256];   // 256 ������ ��������?
    RGBQUAD *           prgb;       // RGB ��Ʈ��

    //
    // �ϴ��� ����Ʈ �ķ�Ʈ�� �±��� ����~ ( 332 palette )
    //
    for (i=0; i<256; i++)
    {
        ape[i].peRed   = (BYTE)(((i >> 5) & 0x07) * 255 / 7);
        ape[i].peGreen = (BYTE)(((i >> 2) & 0x07) * 255 / 7);
        ape[i].peBlue  = (BYTE)(((i >> 0) & 0x03) * 255 / 3);
        ape[i].peFlags = (BYTE)0;
    }

  //
    // ���࿡ ��Ʈ�� ȭ���� �����Ѵٸ� �翬 �о�� ��!
    //
    if (szBitmap && (h = FindResource(NULL, szBitmap, RT_BITMAP)))
    {
        lpbi = (LPBITMAPINFOHEADER)LockResource(LoadResource(NULL, h));
        prgb = (RGBQUAD*)((BYTE*)lpbi + lpbi->biSize);

                // �ķ�Ʈ ������ �ľ��ϴ� �κ��� ����~
        if (lpbi == NULL || lpbi->biSize < sizeof(BITMAPINFOHEADER))
            n = 0;
        else if (lpbi->biBitCount > 8)
            n = 0;
        else if (lpbi->biClrUsed == 0)
         n = 1 << lpbi->biBitCount;
        else
            n = lpbi->biClrUsed;

        //
        //  ��Ʈ�� Į���� ������ RGB������ �ƴϰ� BGR�̱����̹Ƿ�
                //  �ٲ� �־�� �Ѵ�.
        //
        for(i=0; i<n; i++ )
        {
            ape[i].peRed   = prgb[i].rgbRed;
            ape[i].peGreen = prgb[i].rgbGreen;
            ape[i].peBlue  = prgb[i].rgbBlue;
            ape[i].peFlags = 0;
        }
    }
    else if (szBitmap && (fh = _lopen(szBitmap, OF_READ)) != -1)
    {
  BITMAPFILEHEADER bf;
        BITMAPINFOHEADER bi;

        _lread(fh, &bf, sizeof(bf));
        _lread(fh, &bi, sizeof(bi));
        _lread(fh, ape, sizeof(ape));
        _lclose(fh);

        if (bi.biSize != sizeof(BITMAPINFOHEADER))
            n = 0;
        else if (bi.biBitCount > 8)
            n = 0;
        else if (bi.biClrUsed == 0)
            n = 1 << bi.biBitCount;
        else
            n = bi.biClrUsed;

        //
        //  ��Ʈ�� Į���� ������ RGB������ �ƴϰ� BGR�̱����̹Ƿ�
                //  �ٲ� �־�� �Ѵ�.
        //
        for(i=0; i<n; i++ )
        {
            BYTE r = ape[i].peRed;
            ape[i].peRed  = ape[i].peBlue;
            ape[i].peBlue = r;
        }
    }

        // 256���� �ʱ�ȭ �Ѵ�.
    pdd->CreatePalette(DDPCAPS_8BIT, ape, &ddpal, NULL);
    
    return ddpal;
}


    �� Ǯ��ũ���� �������� ����� �ȷ�Ʈ ���� ������

     1. ���� ��� (Full Screen Mode)

     Ǯ ��ũ��(���� ���)�� ���α׷������� ������ �ȷ�Ʈ��
     RGB�� ù��° ���� ������ ���� �������� ����� ������ ��
     �� ���� ���� �Ҽ� �ֽ��ϴ�. �� ���⼭ ���� �������� �dz�
     �� ����� �ݵ�� �̻��̿��� �մϴ�.
         ���� ���� ���� ����� �ٲܼ��� �ֽ��ϴ�. �̷� ���� ���
     �� ����ص� ������ � �׷��� ī�忡���� �̷��� ������
     �ķ�Ʈ�� ������ ������ �߻� �ɼ��� �ֽ��ϴ�.

         2. �������� ��� (Normal Screen Mode)
     
     �������� ��忡���� ������ �ȷ�Ʈ�� ���� 10���� ���� 10��
     �� ���� �̹� ������ �Ǿ��ֽ��ϴ�. ���� ���� ���� ���?
     (�׷��ٸ� ���α׷��Ӱ� ������ �̸� �ϸ� �ȵdz�? ^^;)

     �̰��� ���������� �ü���� ����ϰ� �ֽ��ϴ�. �̷���
     ������ �׾ƹ��� ȣȭ ������ ���� �ᵵ �̺κ��� ����ؼ���
     �ȵǹǷ� �������� â�� ���� ������ �ʰ� �÷��̰� �Ǵ� ��
     �Դϴ�. ���� ������� ���� ���� ħ���Ҽ��� ������ �ɼ�
     �ִ��� ħ���� ���� �ʴ� ���� ���Ⱑ ���� ���� ���?