Jump to content
  • Advertisement
Sign in to follow this  

Resizing backbuffer in windows form

This topic is 2179 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

view.jpg Edited by ~Helgon

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!