Jump to content

View more

Image of the Day

Adding some finishing touches...
Follow us for more
#screenshotsaturday #indiedev... by #MakeGoodGames https://t.co/Otbwywbm3a
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Sign up now

Resizing backbuffer in windows form

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 ~Helgon   Members   


Posted 27 December 2012 - 07:14 PM

Hey, I'm testing at the moment using C# (WindowsForms) as my Editor GUI for my DirectX Application.
After hours of trying i got a pretty good running solution but one thing i didn't figured until now is how to resize my frame

I thought it should work like in my normal solution - what I've done was first to write the running code in normal c++ and then

port in to my c++/clr version.

Theres no error and it works totally right but it doesn't resize. Does someone has an idea why?

The resize code:

void Editor::OnResizeApp()

	// Release the old views, as they hold references to the buffers we
	// release the old depth/stencil buffer.


	// Resize the swap chain and recreate the render target view.

	HR(mSwapChain->ResizeBuffers(1, panel1->Width, panel1->Height, DXGI_FORMAT_R8G8B8A8_UNORM, 0));
	ID3D11Texture2D* backBuffer;
	HR(mSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&backBuffer)));
	HR(md3dDevice->CreateRenderTargetView(backBuffer, 0, &mRenderTargetView));

	// Create the depth/stencil buffer and view.

	D3D11_TEXTURE2D_DESC depthStencilDesc;
	depthStencilDesc.Width     = panel1->Width;
	depthStencilDesc.Height    = panel1->Height;
	depthStencilDesc.MipLevels = 1;
	depthStencilDesc.ArraySize = 1;
	depthStencilDesc.Format    = DXGI_FORMAT_D24_UNORM_S8_UINT;

	// Use 4X MSAA? --must match swap chain MSAA values.
	if( mEnable4xMsaa )
		depthStencilDesc.SampleDesc.Count   = 4;
		depthStencilDesc.SampleDesc.Quality = m4xMsaaQuality-1;
	// No MSAA
		depthStencilDesc.SampleDesc.Count   = 1;
		depthStencilDesc.SampleDesc.Quality = 0;

	depthStencilDesc.Usage          = D3D11_USAGE_DEFAULT;
	depthStencilDesc.BindFlags      = D3D11_BIND_DEPTH_STENCIL;
	depthStencilDesc.CPUAccessFlags = 0; 
	depthStencilDesc.MiscFlags      = 0;

	HR(md3dDevice->CreateTexture2D(&depthStencilDesc, 0, &mDepthStencilBuffer));
	HR(md3dDevice->CreateDepthStencilView(mDepthStencilBuffer, 0, &mDepthStencilView));

	// Bind the render target view and depth/stencil view to the pipeline.

	md3dImmediateContext->OMSetRenderTargets(1, &mRenderTargetView, mDepthStencilView);

	// Set the viewport transform.

	mScreenViewport.TopLeftX = 0.0f;
	mScreenViewport.TopLeftY = 0.0f;
	mScreenViewport.Width    = static_cast<float>(panel1->Width);
	mScreenViewport.Height   = static_cast<float>(panel1->Height);
	mScreenViewport.MinDepth = 0.0f;
	mScreenViewport.MaxDepth = 1.0f;

	md3dImmediateContext->RSSetViewports(1, &mScreenViewport);
I take the new width and height of the backbuffer from the panel1 component. The values it returns are totally correct. Just

that i dont get the correct visual feedback.
As you see in the screenshot the left area (red area) is the size of the panel (and the backbuffer etc) when the programm

initializes. When i resize the width the panel gets bigger as you can see (the khaki colored area is the panel) - but the

directx frame stays the same.

Any ideas why? And yes of course i call the resize method when the size changed event is fired - basically it should work perfect but it doesnt resize - very strange


Edited by ~Helgon, 27 December 2012 - 07:20 PM.

from time to time i find time

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.