Seite 1 von 1

[DX10] OMSetRenderTarget Problem

Verfasst: 09.04.2009, 23:53
von kkrahl
Ich musste heute leider feststellen das ich wenn ich in eine Textur rendere uns diese zuvor cleare manchmal der Inhalt des originalen RenderTargets enthalten ist und nicht der Teil den ich rein rendere während ich auf die Textur als RenderTarget geschalten habe.

Hier mein Code:

Code: Alles auswählen

			// Clear the render target 1st
			this->mpD3DDevice->ClearRenderTargetView(this->mpTextureRenderTargetView,D3DXCOLOR(0.0f,0.0f,0.0f,0.0f));

			// Set the Render Target
			this->mpD3DDevice->OMSetRenderTargets(1,&(this->mpTextureRenderTargetView),NULL);

			// draw the text now to the new render target
			if(FAILED(this->mpSprite->Begin(D3DX10_SPRITE_SAVE_STATE | D3DX10_SPRITE_SORT_TEXTURE)))
				return Core::Logging::LogError(L"Begin Sprite failed!");

			// Check and calculate for full text height
			if(this->mFullHeight <= this->mHeight)
				this->RenderTopDown(); // methode zu Textrendern, benutzt DrawText
			else
				this->RenderBottomUp(); // methode zu Textrendern, benutzt DrawText

			if(FAILED(this->mpSprite->End()))
				return Core::Logging::LogError(L"End Sprite failed!");

			if(!(this->mpDX2DTexture->SetTexture(this->mpTexture)))  // wieterverwendung der Texture die ich als RenderTarget genutzt hatte
				return Core::Logging::LogError(L"SetTexture failed!");

			// reset to the old Render Target
			ID3D10RenderTargetView* oldRenderTargetView = DXCore::RenderTargetView();
			ID3D10DepthStencilView* oldDepthStencilView = DXCore::DepthStencilView();
			this->mpD3DDevice->OMSetRenderTargets(1,&oldRenderTargetView,oldDepthStencilView);
Hat wer eine Idee was ich falsch mache?

Dank euch

Karl

Re: [DX10] OMSetRenderTarget Problem

Verfasst: 10.04.2009, 09:11
von kkrahl
Heute Nacht als im Bett lag bin ich auf die vermutliche Ursache gestoßen - Stichwort Multithreading. Werde das auch gleich heute Abend austesten.

Re: [DX10] OMSetRenderTarget Problem

Verfasst: 10.04.2009, 19:38
von kkrahl
Das war leider nicht mein Problem!

Hat von euch jemand eine Idee?