// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of NVIDIA CORPORATION nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. #ifndef NULL_RENDERER_H #define NULL_RENDERER_H #include #include namespace SampleRenderer { class NullRenderer : public Renderer { public: NullRenderer(const RendererDesc &desc, const char* assetDir); virtual ~NullRenderer(void); public: // clears the offscreen buffers. virtual void clearBuffers(void); // presents the current color buffer to the screen. // returns true on device reset and if buffers need to be rewritten. virtual bool swapBuffers(void); // get the device pointer (void * abstraction) virtual void *getDevice(); virtual void finishRendering(); virtual void getWindowSize(PxU32 &width, PxU32 &height) const; virtual RendererVertexBuffer *createVertexBuffer( const RendererVertexBufferDesc &desc); virtual RendererIndexBuffer *createIndexBuffer( const RendererIndexBufferDesc &desc); virtual RendererInstanceBuffer *createInstanceBuffer(const RendererInstanceBufferDesc &desc); virtual RendererTexture2D *createTexture2D( const RendererTexture2DDesc &desc); virtual RendererTexture3D *createTexture3D( const RendererTexture3DDesc &desc); virtual RendererTarget *createTarget( const RendererTargetDesc &desc); virtual RendererMaterial *createMaterial( const RendererMaterialDesc &desc); virtual RendererMesh *createMesh( const RendererMeshDesc &desc); virtual RendererLight *createLight( const RendererLightDesc &desc); virtual bool captureScreen(const char* filename); virtual void renderLines2D(const void* vertices, PxU32 nbVerts); private: virtual void bindViewProj(const physx::PxMat44 &eye, const RendererProjection &proj); virtual void bindAmbientState(const RendererColor &ambientColor); virtual void bindFogState(const RendererColor &fogColor, float fogDistance); virtual void bindDeferredState(void); virtual void bindMeshContext(const RendererMeshContext &context); virtual void beginMultiPass(void); virtual void endMultiPass(void); virtual void renderDeferredLight(const RendererLight &light); virtual PxU32 convertColor(const RendererColor& color) const; virtual void beginTransparentMultiPass(void) {} virtual void endTransparentMultiPass(void) {} virtual void setVsync(bool on) {} virtual bool captureScreen(PxU32 &width, PxU32& height, PxU32& sizeInBytes, const void*& screenshotData) { return false; } virtual bool isOk(void) const; virtual void setupTextRenderStates(); virtual void resetTextRenderStates(); virtual void renderTextBuffer(const void* vertices, PxU32 nbVerts, const PxU16* indices, PxU32 nbIndices, RendererMaterial* material); virtual void renderLines2D(const void* vertices, PxU32 nbVerts, RendererMaterial* material); virtual void setupScreenquadRenderStates(); virtual void resetScreenquadRenderStates(); virtual bool initTexter(); private: }; } // namespace SampleRenderer #endif