// ----------------------------------------------------------------------------------------- void CPepeEngineRendererCapabilities::log() { LOG("Renderer capabilities"); LOG("-------------------------"); LOG("RenderSystem Name: " + CPepeEngineCore::getSingleton().getRenderer()->getName()); //LOG("GPU Vendor: " + vendorToString(getVendor())); //LOG("Device Name: " + getDeviceName()); //LOG("Driver Version: " + getDriverVersion().parseString()); LOG(" * Hardware generation of mipmaps: " + CPepeEngineConverter::parseString(hasCapability(RC_AUTOMIPMAP))); LOG(" * Texture blending: " + CPepeEngineConverter::parseString(hasCapability(RC_BLENDING))); LOG(" * Anisotropic texture filtering: " + CPepeEngineConverter::parseString(hasCapability(RC_ANISOTROPY))); LOG(" * Dot product texture operation: " + CPepeEngineConverter::parseString(hasCapability(RC_DOT3))); LOG(" * Cube mapping: " + CPepeEngineConverter::parseString(hasCapability(RC_CUBEMAPPING))); LOG(" * Hardware stencil buffer: " + CPepeEngineConverter::parseString(hasCapability(RC_HWSTENCIL))); if (hasCapability(RC_HWSTENCIL)) { LOG(" - Stencil depth: " + CPepeEngineConverter::parseString((float)getStencilBufferBitDepth())); LOG(" - Two sided stencil support: " + CPepeEngineConverter::parseString(hasCapability(RC_TWO_SIDED_STENCIL))); LOG(" - Wrap stencil values: " + CPepeEngineConverter::parseString(hasCapability(RC_STENCIL_WRAP))); } LOG(" * Hardware vertex / index buffers: " + CPepeEngineConverter::parseString(hasCapability(RC_VBO))); LOG(" * Vertex programs: " + CPepeEngineConverter::parseString(hasCapability(RC_VERTEX_PROGRAM))); LOG(" - Max vertex program version: " + getMaxVertexProgramVersion()); LOG(" * Pixel programs: " + CPepeEngineConverter::parseString(hasCapability(RC_PIXEL_PROGRAM))); LOG(" - Max pixel program version: " + getMaxPixelProgramVersion()); LOG(" * Texture Compression: " + CPepeEngineConverter::parseString(hasCapability(RC_TEXTURE_COMPRESSION))); if (hasCapability(RC_TEXTURE_COMPRESSION)) { LOG(" - DXT: " + CPepeEngineConverter::parseString(hasCapability(RC_TEXTURE_COMPRESSION_DXT))); LOG(" - VTC: " + CPepeEngineConverter::parseString(hasCapability(RC_TEXTURE_COMPRESSION_VTC))); } LOG(" * Scissor Rectangle: " + CPepeEngineConverter::parseString(hasCapability(RC_SCISSOR_TEST))); LOG(" * Hardware Occlusion Query: " + CPepeEngineConverter::parseString(hasCapability(RC_HWOCCLUSION))); LOG(" * User clip planes: " + CPepeEngineConverter::parseString(hasCapability(RC_USER_CLIP_PLANES))); LOG(" * VET_UBYTE4 vertex element type: " + CPepeEngineConverter::parseString(hasCapability(RC_VERTEX_FORMAT_UBYTE4))); LOG(" * Infinite far plane projection: " + CPepeEngineConverter::parseString(hasCapability(RC_INFINITE_FAR_PLANE))); LOG(" * Hardware render-to-texture: " + CPepeEngineConverter::parseString(hasCapability(RC_HWRENDER_TO_TEXTURE))); LOG(" * Floating point textures: " + CPepeEngineConverter::parseString(hasCapability(RC_TEXTURE_FLOAT))); LOG(" * Non-power-of-two textures: " + CPepeEngineConverter::parseString(hasCapability(RC_NON_POWER_OF_2_TEXTURES)) + (m_bNonPOW2TexturesLimited ? _T(" (limited)") : _T(""))); LOG(" * Volume textures: " + CPepeEngineConverter::parseString(hasCapability(RC_TEXTURE_3D))); LOG(" * Multiple Render Targets: " + CPepeEngineConverter::parseString((float)m_nNumMultiRenderTargets)); LOG(" * Point Sprites: " + CPepeEngineConverter::parseString(hasCapability(RC_POINT_SPRITES))); LOG(" * Extended point parameters: " + CPepeEngineConverter::parseString(hasCapability(RC_POINT_EXTENDED_PARAMETERS))); LOG(" * Max Point Size: " + CPepeEngineConverter::parseString(m_fMaxPointSize)); LOG(" * Vertex texture fetch: " + CPepeEngineConverter::parseString(hasCapability(RC_VERTEX_TEXTURE_FETCH))); if (hasCapability(RC_VERTEX_TEXTURE_FETCH)) { LOG(" - Max vertex textures: " + CPepeEngineConverter::parseString((float)m_nNumVertexTextureUnits)); LOG(" - Vertex textures shared: " + CPepeEngineConverter::parseString(m_bVertexTextureUnitsShared)); } }
//----------------------------------------------------------------------- void RenderSystemCapabilities::log(Log* pLog) { pLog->logMessage("RenderSystem capabilities"); pLog->logMessage("-------------------------"); pLog->logMessage( " * Hardware generation of mipmaps: " + StringConverter::toString(hasCapability(RSC_AUTOMIPMAP), true)); pLog->logMessage( " * Texture blending: " + StringConverter::toString(hasCapability(RSC_BLENDING), true)); pLog->logMessage( " * Anisotropic texture filtering: " + StringConverter::toString(hasCapability(RSC_ANISOTROPY), true)); pLog->logMessage( " * Dot product texture operation: " + StringConverter::toString(hasCapability(RSC_DOT3), true)); pLog->logMessage( " * Cube mapping: " + StringConverter::toString(hasCapability(RSC_CUBEMAPPING), true)); pLog->logMessage( " * Hardware stencil buffer: " + StringConverter::toString(hasCapability(RSC_HWSTENCIL), true)); if (hasCapability(RSC_HWSTENCIL)) { pLog->logMessage( " - Stencil depth: " + StringConverter::toString(getStencilBufferBitDepth())); pLog->logMessage( " - Two sided stencil support: " + StringConverter::toString(hasCapability(RSC_TWO_SIDED_STENCIL), true)); pLog->logMessage( " - Wrap stencil values: " + StringConverter::toString(hasCapability(RSC_STENCIL_WRAP), true)); } pLog->logMessage( " * Hardware vertex / index buffers: " + StringConverter::toString(hasCapability(RSC_VBO), true)); pLog->logMessage( " * Vertex programs: " + StringConverter::toString(hasCapability(RSC_VERTEX_PROGRAM), true)); if (hasCapability(RSC_VERTEX_PROGRAM)) { pLog->logMessage( " - Max vertex program version: " + getMaxVertexProgramVersion()); } pLog->logMessage( " * Fragment programs: " + StringConverter::toString(hasCapability(RSC_FRAGMENT_PROGRAM), true)); if (hasCapability(RSC_FRAGMENT_PROGRAM)) { pLog->logMessage( " - Max fragment program version: " + getMaxFragmentProgramVersion()); } pLog->logMessage( " * Texture Compression: " + StringConverter::toString(hasCapability(RSC_TEXTURE_COMPRESSION), true)); if (hasCapability(RSC_TEXTURE_COMPRESSION)) { pLog->logMessage( " - DXT: " + StringConverter::toString(hasCapability(RSC_TEXTURE_COMPRESSION_DXT), true)); pLog->logMessage( " - VTC: " + StringConverter::toString(hasCapability(RSC_TEXTURE_COMPRESSION_VTC), true)); } pLog->logMessage( " * Scissor Rectangle: " + StringConverter::toString(hasCapability(RSC_SCISSOR_TEST), true)); pLog->logMessage( " * Hardware Occlusion Query: " + StringConverter::toString(hasCapability(RSC_HWOCCLUSION), true)); pLog->logMessage( " * User clip planes: " + StringConverter::toString(hasCapability(RSC_USER_CLIP_PLANES), true)); pLog->logMessage( " * VET_UBYTE4 vertex element type: " + StringConverter::toString(hasCapability(RSC_VERTEX_FORMAT_UBYTE4), true)); pLog->logMessage( " * Infinite far plane projection: " + StringConverter::toString(hasCapability(RSC_INFINITE_FAR_PLANE), true)); pLog->logMessage( " * Hardware render-to-texture: " + StringConverter::toString(hasCapability(RSC_HWRENDER_TO_TEXTURE), true)); pLog->logMessage( " * Floating point textures: " + StringConverter::toString(hasCapability(RSC_TEXTURE_FLOAT), true)); pLog->logMessage( " * Non-power-of-two textures: " + StringConverter::toString(hasCapability(RSC_NON_POWER_OF_2_TEXTURES), true) + (mNonPOW2TexturesLimited ? " (limited)" : "")); pLog->logMessage( " * Volume textures: " + StringConverter::toString(hasCapability(RSC_TEXTURE_3D), true)); pLog->logMessage( " * Multiple Render Targets: " + StringConverter::toString(mNumMultiRenderTargets)); pLog->logMessage( " * Point Sprites: " + StringConverter::toString(hasCapability(RSC_POINT_SPRITES), true)); pLog->logMessage( " * Extended point parameters: " + StringConverter::toString(hasCapability(RSC_POINT_EXTENDED_PARAMETERS), true)); pLog->logMessage( " * Max Point Size: " + StringConverter::toString(mMaxPointSize)); }