Add a common GLSL check.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@12836 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
curaga 2013-06-01 11:01:59 +00:00
parent 5513ca08cb
commit 304dceae8c
4 changed files with 24 additions and 10 deletions

View File

@ -381,6 +381,17 @@ void IrrDriver::initDevice()
m_scene_manager = m_device->getSceneManager();
m_gui_env = m_device->getGUIEnvironment();
m_video_driver = m_device->getVideoDriver();
m_glsl = m_video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
m_video_driver->queryFeature(video::EVDF_TEXTURE_NPOT);
if (m_glsl)
{
Log::info("irr_driver", "GLSL supported.");
}
else
{
Log::warn("irr_driver", "Too old GPU; using the fixed pipeline.");
}
// Only change video driver settings if we are showing graphics
if (!ProfileWorld::isNoGraphics())
@ -1741,9 +1752,7 @@ bool IrrDriver::OnEvent(const irr::SEvent &event)
bool IrrDriver::supportsSplatting()
{
return UserConfigParams::m_pixel_shaders &&
m_video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
m_video_driver->queryFeature(video::EVDF_MULTITEXTURE );
return UserConfigParams::m_pixel_shaders && m_glsl;
}
// ----------------------------------------------------------------------------

View File

@ -103,6 +103,9 @@ private:
/** Whether the mouse cursor is currently shown */
bool m_pointer_shown;
/** Supports GLSL */
bool m_glsl;
/** Internal method that applies the resolution in user settings. */
void applyResolutionSettings();
void createListOfVideoModes();
@ -227,6 +230,9 @@ public:
/** Returns a pointer to the post processing object. */
inline PostProcessing* getPostProcessing() {return m_post_processing;}
// ------------------------------------------------------------------------
inline bool isGLSL() const { return m_glsl; }
// ------------------------------------------------------------------------
#ifdef DEBUG
/** Removes debug meshes. */
void clearDebugMesh() { m_debug_meshes.clear(); }

View File

@ -1014,7 +1014,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
{
IVideoDriver* video_driver = irr_driver->getVideoDriver();
if (UserConfigParams::m_pixel_shaders &&
video_driver->queryFeature(video::EVDF_ARB_GLSL))
irr_driver->isGLSL())
{
if (m_shaders[SHADER_SPHERE_MAP] == NULL)
{
@ -1093,7 +1093,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
{
IVideoDriver* video_driver = irr_driver->getVideoDriver();
if (UserConfigParams::m_pixel_shaders &&
video_driver->queryFeature(video::EVDF_ARB_GLSL))
irr_driver->isGLSL())
{
ITexture* tex = irr_driver->getTexture(m_normal_map_tex);
if (m_is_heightmap)
@ -1267,7 +1267,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
{
IVideoDriver* video_driver = irr_driver->getVideoDriver();
if (UserConfigParams::m_pixel_shaders &&
video_driver->queryFeature(video::EVDF_ARB_GLSL))
irr_driver->isGLSL())
{
if (m_bubble_provider.find(mb) == m_bubble_provider.end())
{
@ -1300,7 +1300,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
{
IVideoDriver* video_driver = irr_driver->getVideoDriver();
if (UserConfigParams::m_pixel_shaders &&
video_driver->queryFeature(video::EVDF_ARB_GLSL))
irr_driver->isGLSL())
{
if (m_shaders[SHADER_WATER] == NULL)
{
@ -1337,7 +1337,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
{
IVideoDriver* video_driver = irr_driver->getVideoDriver();
if (UserConfigParams::m_pixel_shaders &&
video_driver->queryFeature(video::EVDF_ARB_GLSL))
irr_driver->isGLSL())
{
if (m_shaders[SHADER_GRASS] == NULL)
{

View File

@ -37,8 +37,7 @@ PostProcessing::PostProcessing(video::IVideoDriver* video_driver)
{
// Check if post-processing is supported on this hardware
m_supported = false;
if( video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
video_driver->queryFeature(video::EVDF_RENDER_TO_TARGET))
if( irr_driver->isGLSL() )
{
m_supported = true;
}