views:

236

answers:

3

I am trying to setup my swap chain Buffer but I get the following error

error C2228: left of '.DXGI_MODE' must have class/struct/union
1>        type is 'DXGI_MODE_SCANLINE_ORDER'

Note sure what I am doing wrong. here is the code

DXGI_SWAP_CHAIN_DESC swapChainDesc;

    // Set the width and height of the buffers in the swap chain
    swapChainDesc.BufferDesc.Width = 640;
    swapChainDesc.BufferDesc.Height = 480;

    // Set the refresh rate. This is how often the buffers get swapped out
    swapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
    swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;

    // Set the surface format of the buffers
    swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    swapChainDesc.BufferDesc.ScanlineOrdering.DXGI_MODE;
    //_SCANLINE_ORDER_UNSPECIFIED;
    swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
    swapChainDesc.SampleDesc.Count = 1;
    swapChainDesc.SampleDesc.Quality = 0;

    // Set how the buffers are used. Since you are drawing to the buffers, they are
    //considered a render target
    swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;

    // Set the number of back buffers, 1 is the minimum and normally sufficient
    swapChainDesc.BufferCount = 1;

    // A handle to the main application window
    swapChainDesc.OutputWindow = hWnd;

    // Set whether you are running in a window or fullscreen mode
    swapChainDesc.Windowed = TRUE;

    // How the buffers are swapped. Discard allows the buffers to be overwritten
    //completely when swapped.
    swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
    swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_NONPREROTATED;
+1  A: 

Did'n you mean

swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE;

instead of

swapChainDesc.BufferDesc.ScanlineOrdering.DXGI_MODE;
Nikolai N Fetissov
+2  A: 

Shouldn't this bit

swapChainDesc.BufferDesc.ScanlineOrdering.DXGI_MODE;
//_SCANLINE_ORDER_UNSPECIFIED;

in fact be

swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;

?

AakashM
+1  A: 

swapChainDesc.BufferDesc.ScanlineOrdering is an enum DXGI_MODE_SCANLINE_ORDER, not a class type.

Use something like the following instead:

swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
Georg Fritzsche