diff --git a/source/Irrlicht/CD3D8Driver.cpp b/source/Irrlicht/CD3D8Driver.cpp index cc6371a9..3b90b3b9 100644 --- a/source/Irrlicht/CD3D8Driver.cpp +++ b/source/Irrlicht/CD3D8Driver.cpp @@ -138,7 +138,6 @@ void CD3D8Driver::createMaterialRenderers() // add basic 1 texture blending addAndDropMaterialRenderer(new CD3D8MaterialRenderer_ONETEXTURE_BLEND(pID3DDevice, this)); - } @@ -190,8 +189,6 @@ bool CD3D8Driver::initDriver(const core::dimension2d& screenSize, os::Printer::log(tmp, ELL_INFORMATION); } - - D3DDISPLAYMODE d3ddm; hr = pID3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm); if (FAILED(hr)) @@ -200,10 +197,9 @@ bool CD3D8Driver::initDriver(const core::dimension2d& screenSize, return false; } - ZeroMemory(&present, sizeof(present)); - present.SwapEffect = D3DSWAPEFFECT_COPY; + present.SwapEffect = D3DSWAPEFFECT_DISCARD; present.Windowed = TRUE; present.BackBufferFormat = d3ddm.Format; present.EnableAutoDepthStencil = TRUE; @@ -649,7 +645,6 @@ void CD3D8Driver::setMaterial(const SMaterial& material) setTransform((E_TRANSFORMATION_STATE) ( ETS_TEXTURE_0 + i ), material.getTextureMatrix(i)); } - } @@ -668,7 +663,6 @@ void CD3D8Driver::setTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag, if (flag == video::ETCF_CREATE_MIP_MAPS && !queryFeature(EVDF_MIP_MAP)) enabled = false; - CNullDriver::setTextureCreationFlag(flag, enabled); } @@ -733,12 +727,11 @@ bool CD3D8Driver::setRenderTarget(video::ITexture* texture, // store previous target - if (!PrevRenderTarget) - if (FAILED(pID3DDevice->GetRenderTarget(&PrevRenderTarget))) - { - os::Printer::log("Could not get previous render target.", ELL_ERROR); - return false; - } + if (!PrevRenderTarget && (FAILED(pID3DDevice->GetRenderTarget(&PrevRenderTarget)))) + { + os::Printer::log("Could not get previous render target.", ELL_ERROR); + return false; + } // set new render target @@ -1168,11 +1161,9 @@ void CD3D8Driver::draw2DRectangle(const core::rect& position, pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, &indices[0], D3DFMT_INDEX16, &vtx[0], sizeof(S3DVertex)); - } - //! Draws a 2d line. void CD3D8Driver::draw2DLine(const core::position2d& start, const core::position2d& end, @@ -1211,6 +1202,7 @@ void CD3D8Driver::draw2DLine(const core::position2d& start, pID3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, &vtx[0], sizeof(S3DVertex)); } + //! Draws a pixel void CD3D8Driver::drawPixel(u32 x, u32 y, const SColor & color) { @@ -1235,7 +1227,6 @@ void CD3D8Driver::drawPixel(u32 x, u32 y, const SColor & color) } - //! sets right vertex shader void CD3D8Driver::setVertexShader(E_VERTEX_TYPE newType) { @@ -1354,7 +1345,6 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria } // shademode - if (resetAllRenderstates || lastmaterial.GouraudShading != material.GouraudShading) { if (material.GouraudShading) @@ -1364,7 +1354,6 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria } // lighting - if (resetAllRenderstates || lastmaterial.Lighting != material.Lighting) { if (material.Lighting) @@ -1373,9 +1362,7 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria pID3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); } - // zbuffer - if (resetAllRenderstates || lastmaterial.ZBuffer != material.ZBuffer) { switch (material.ZBuffer) @@ -1394,7 +1381,6 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria } } - // zwrite // if (resetAllRenderstates || lastmaterial.ZWriteEnable != material.ZWriteEnable) { @@ -1405,8 +1391,6 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria } // back face culling - - if (resetAllRenderstates || (lastmaterial.FrontfaceCulling != material.FrontfaceCulling) || (lastmaterial.BackfaceCulling != material.BackfaceCulling)) { // if (material.FrontfaceCulling && material.BackfaceCulling) @@ -1504,7 +1488,6 @@ void CD3D8Driver::setBasicRenderStates(const SMaterial& material, const SMateria } - //! sets the needed renderstates void CD3D8Driver::setRenderStatesStencilShadowMode(bool zfail) { @@ -1588,7 +1571,6 @@ void CD3D8Driver::setRenderStatesStencilShadowMode(bool zfail) } - //! sets the needed renderstates void CD3D8Driver::setRenderStatesStencilFillMode(bool alpha) { @@ -1646,7 +1628,6 @@ void CD3D8Driver::setRenderStatesStencilFillMode(bool alpha) } - //! sets the needed renderstates void CD3D8Driver::setRenderStates2DMode(bool alpha, bool texture, bool alphaChannel) { @@ -1784,7 +1765,6 @@ void CD3D8Driver::deleteAllDynamicLights() } - //! adds a dynamic light void CD3D8Driver::addDynamicLight(const SLight& dl) { @@ -1831,7 +1811,6 @@ void CD3D8Driver::addDynamicLight(const SLight& dl) } - //! returns the maximal amount of dynamic lights the device can handle u32 CD3D8Driver::getMaximalDynamicLightAmount() const { @@ -1839,7 +1818,6 @@ u32 CD3D8Driver::getMaximalDynamicLightAmount() const } - //! Sets the dynamic ambient light color. The default color is //! (0,0,0,0) which means it is dark. //! \param color: New color of the ambient light. @@ -1854,7 +1832,6 @@ void CD3D8Driver::setAmbientLight(const SColorf& color) } - //! \return Returns the name of the video driver. Example: In case of the DIRECT3D8 //! driver, it would return "Direct3D8.1". const wchar_t* CD3D8Driver::getName() const @@ -1863,7 +1840,6 @@ const wchar_t* CD3D8Driver::getName() const } - //! Draws a shadow volume into the stencil buffer. To draw a stencil shadow, do //! this: Frist, draw all geometry. Then use this method, to draw the shadow //! volume. Then, use IVideoDriver::drawStencilShadow() to visualize the shadow. @@ -1905,7 +1881,6 @@ void CD3D8Driver::drawStencilShadowVolume(const core::vector3df* triangles, s32 } - //! Fills the stencil shadow with color. After the shadow volume has been drawn //! into the stencil buffer using IVideoDriver::drawStencilShadowVolume(), use this //! to draw the color of the shadow. @@ -1941,7 +1916,6 @@ void CD3D8Driver::drawStencilShadow(bool clearStencilBuffer, video::SColor leftU } - //! Returns the maximum amount of primitives (mostly vertices) which //! the device is able to render with one drawIndexedTriangleList //! call. @@ -1978,6 +1952,7 @@ void CD3D8Driver::setFog(SColor color, bool linearFog, f32 start, pID3DDevice->SetRenderState (D3DRS_RANGEFOGENABLE, rangeFog); } + //! Draws a 3d line. void CD3D8Driver::draw3DLine(const core::vector3df& start, const core::vector3df& end, SColor color) @@ -2003,18 +1978,21 @@ void CD3D8Driver::OnResize(const core::dimension2d& size) reset(); } + //! Returns type of video driver E_DRIVER_TYPE CD3D8Driver::getDriverType() const { return EDT_DIRECT3D8; } + //! Returns the transformation set by setTransform const core::matrix4& CD3D8Driver::getTransform(E_TRANSFORMATION_STATE state) const { return Matrices[state]; } + //! Sets a vertex shader constant. void CD3D8Driver::setVertexShaderConstant(const f32* data, s32 startRegister, s32 constantAmount) { @@ -2022,6 +2000,7 @@ void CD3D8Driver::setVertexShaderConstant(const f32* data, s32 startRegister, s3 pID3DDevice->SetVertexShaderConstant(startRegister, data, constantAmount); } + //! Sets a pixel shader constant. void CD3D8Driver::setPixelShaderConstant(const f32* data, s32 startRegister, s32 constantAmount) { @@ -2029,6 +2008,7 @@ void CD3D8Driver::setPixelShaderConstant(const f32* data, s32 startRegister, s32 pID3DDevice->SetPixelShaderConstant(startRegister, data, constantAmount); } + //! Sets a constant for the vertex shader based on a name. bool CD3D8Driver::setVertexShaderConstant(const c8* name, const f32* floats, int count) { @@ -2036,6 +2016,7 @@ bool CD3D8Driver::setVertexShaderConstant(const c8* name, const f32* floats, int return false; } + //! Sets a constant for the pixel shader based on a name. bool CD3D8Driver::setPixelShaderConstant(const c8* name, const f32* floats, int count) { @@ -2043,6 +2024,7 @@ bool CD3D8Driver::setPixelShaderConstant(const c8* name, const f32* floats, int return false; } + //! Returns pointer to the IGPUProgrammingServices interface. IGPUProgrammingServices* CD3D8Driver::getGPUProgrammingServices() { @@ -2075,7 +2057,6 @@ IVideoDriver* CD3D8Driver::getVideoDriver() } - //! Clears the ZBuffer. void CD3D8Driver::clearZBuffer() { @@ -2085,6 +2066,7 @@ void CD3D8Driver::clearZBuffer() os::Printer::log("CD3D8Driver clearZBuffer() failed.", ELL_WARNING); } + //! Returns an image created from the last rendered frame. IImage* CD3D8Driver::createScreenShot() { @@ -2176,7 +2158,6 @@ IImage* CD3D8Driver::createScreenShot() } - // returns the current size of the screen or rendertarget const core::dimension2d& CD3D8Driver::getCurrentRenderTargetSize() const { @@ -2187,7 +2168,6 @@ const core::dimension2d& CD3D8Driver::getCurrentRenderTargetSize() const } - // Set/unset a clipping plane. bool CD3D8Driver::setClipPlane(u32 index, const core::plane3df& plane, bool enable) { @@ -2228,10 +2208,10 @@ namespace video #ifdef _IRR_COMPILE_WITH_DIRECT3D_8_ //! creates a video driver -IVideoDriver* createDirectX8Driver(const core::dimension2d& screenSize, HWND window, - u32 bits, bool fullscreen, bool stencilbuffer, - io::IFileSystem* io, bool pureSoftware, bool highPrecisionFPU, - bool vsync, bool antiAlias) +IVideoDriver* createDirectX8Driver(const core::dimension2d& screenSize, + HWND window, u32 bits, bool fullscreen, bool stencilbuffer, + io::IFileSystem* io, bool pureSoftware, bool highPrecisionFPU, + bool vsync, bool antiAlias) { CD3D8Driver* dx8 = new CD3D8Driver(screenSize, window, fullscreen, stencilbuffer, io, pureSoftware); @@ -2250,4 +2230,3 @@ IVideoDriver* createDirectX8Driver(const core::dimension2d& screenSize, HWN } // end namespace video } // end namespace irr - diff --git a/source/Irrlicht/CD3D9Driver.cpp b/source/Irrlicht/CD3D9Driver.cpp index 1768d8e0..155b2430 100644 --- a/source/Irrlicht/CD3D9Driver.cpp +++ b/source/Irrlicht/CD3D9Driver.cpp @@ -130,7 +130,6 @@ void CD3D9Driver::createMaterialRenderers() MaterialRenderers[EMT_TRANSPARENT_VERTEX_ALPHA].Renderer); renderer->drop(); - // add parallax map renderers renderer = new CD3D9ParallaxMapRenderer(pID3DDevice, this, tmp, @@ -145,10 +144,8 @@ void CD3D9Driver::createMaterialRenderers() MaterialRenderers[EMT_TRANSPARENT_VERTEX_ALPHA].Renderer); renderer->drop(); - // add basic 1 texture blending addAndDropMaterialRenderer(new CD3D9MaterialRenderer_ONETEXTURE_BLEND(pID3DDevice, this)); - } @@ -251,7 +248,7 @@ bool CD3D9Driver::initDriver(const core::dimension2d& screenSize, else { present.BackBufferFormat = d3ddm.Format; - present.SwapEffect = D3DSWAPEFFECT_COPY; + present.SwapEffect = D3DSWAPEFFECT_DISCARD; present.Windowed = TRUE; } @@ -303,9 +300,9 @@ bool CD3D9Driver::initDriver(const core::dimension2d& screenSize, D3DMULTISAMPLE_NONMASKABLE, &qualityLevels))) { // enable non maskable multi sampling - present.SwapEffect = D3DSWAPEFFECT_DISCARD; present.MultiSampleType = D3DMULTISAMPLE_NONMASKABLE; present.MultiSampleQuality = qualityLevels-1; + present.SwapEffect = D3DSWAPEFFECT_DISCARD; } else {