The warnings are back, however I don´t have a clue why they reappeared...
this is the current source that deals with render targets and textures, there´s no other line of code in my project that sets any textures or render targets:
this->m_pRTBackBuffer = NULL; HRESULT hr = this->m_pDirect3DDevice->GetRenderTarget(0, &this->m_pRTBackBuffer); if(FAILED(hr)) { MessageBox(NULL, "GetRenderTarget failed!", "RenderGeometryPass error!", MB_OK); return -11; } hr = this->m_pDirect3DDevice->SetRenderTarget(0, this->m_pRTColorSurface); if(FAILED(hr)) { MessageBox(NULL, "SetRenderTarget for ColorTexture failed!", "RenderGeometryPass error!", MB_OK); return -12; } this->m_pDirect3DDevice->SetRenderTarget(1, this->m_pRTNormalsSurface); if(FAILED(hr)) { MessageBox(NULL, "SetRenderTarget for NormalTexture failed!", "RenderGeometryPass error!", MB_OK); return -12; } this->m_pDirect3DDevice->SetRenderTarget(2, this->m_pRTDepthSurface); if(FAILED(hr)) { MessageBox(NULL, "SetRenderTarget for DepthTexture failed!", "RenderGeometryPass error!", MB_OK); return -12; } this->m_pDirect3DDevice->SetRenderTarget(3, this->m_pRTSpecularSurface); if(FAILED(hr)) { MessageBox(NULL, "SetRenderTarget for SpecTexture failed!", "RenderGeometryPass error!", MB_OK); return -12; } this->m_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER|D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.f, 0); this->m_pDirect3DDevice->BeginScene();// I render the first pass here this->m_pDirect3DDevice->EndScene(); hr = this->m_pDirect3DDevice->SetRenderTarget(0, this->m_pRTBackBuffer); if(FAILED(hr)) { MessageBox(NULL, "Reverting to backbuffer failed!", "Renderer::RenderGeometryPass() error", MB_OK); return -30; } this->m_pRTBackBuffer->Release(); this->m_pRTBackBuffer = NULL; this->m_pDirect3DDevice->SetRenderTarget(1, NULL); this->m_pDirect3DDevice->SetRenderTarget(2, NULL); this->m_pDirect3DDevice->SetRenderTarget(3, NULL); this->m_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER|D3DCLEAR_TARGET, D3DCOLOR_XRGB(70, 70, 100), 1.0, 0); //e is an ID3DXEffect containing the SimpleLight.fx shader from my first // post e->SetTexture("ColorMap", this->m_pRTColor); e->SetTexture("DepthMap", this->m_pRTDepth); e->SetTexture("NormalMap", this->m_pRTNormals); e->SetTechnique("tec0"); this->m_pDirect3DDevice->SetStreamSource(0,this->m_pVBQuads,0,20);this->m_pDirect3DDevice->SetVertexDeclaration(this->m_TransformedVerticesVD); this->m_pDirect3DDevice->BeginScene();//rendering one full-screen quad here this->m_pDirect3DDevice->EndScene(); e->SetTexture("ColorMap", NULL); e->SetTexture("DepthMap", NULL); e->SetTexture("NormalMap", NULL); this->m_pDirect3DDevice->Present(0,0,0,0);
I left out some lines that set floats and matrices for the shader, as I don´t think they´re related to the problem.
As you see I call SetTexture(..., NULL) for all the textures I set during the second pass.
The warnings are spilled at every DrawIndexedPrimitive() call during the first pass, where I use m_pRTColor, m_pRTNormals and m_pRTDepth as render targets.
Anything else I can do to be really sure those textures aren´t bound anymore, as it seems that SetTexture(...,NULL) didn´t do the trick.
PS: I still only get those warnings when I use all three textures at once, using one or two of them works fine.