Exposes Opengl Vendor, Driver, Shader Model information to python

This commit is contained in:
Zhao Huang 2011-12-30 09:00:37 +00:00
parent b4fcbfff0a
commit a56760cbcf
4 changed files with 98 additions and 0 deletions

View File

@ -130,6 +130,7 @@ TypeHandle GraphicsStateGuardian::_type_handle;
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
GraphicsStateGuardian::
GraphicsStateGuardian(CoordinateSystem internal_coordinate_system,
GraphicsEngine *engine, GraphicsPipe *pipe) :
@ -2664,3 +2665,52 @@ make_shadow_buffer(const NodePath &light_np, GraphicsOutputBase *host) {
return tex;
}
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_vendor
// Access: Public, Virtual
// Description: Returns the vendor of the video card driver
////////////////////////////////////////////////////////////////////
string GraphicsStateGuardian::get_driver_vendor() { return string("0"); }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_vendor
// Access: Public, Virtual
// Description: Returns GL_Renderer
////////////////////////////////////////////////////////////////////
string GraphicsStateGuardian::get_driver_renderer() { return string("0"); }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_version
// Access: Public, Virtual
// Description: Returns driver version
////////////////////////////////////////////////////////////////////
string GraphicsStateGuardian::get_driver_version() { return string("0"); }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_version_major
// Access: Public, Virtual
// Description: Returns major version of the video driver
////////////////////////////////////////////////////////////////////
int GraphicsStateGuardian::get_driver_version_major() { return -1; }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_version_minor
// Access: Public, Virtual
// Description: Returns the minor version of the video driver
////////////////////////////////////////////////////////////////////
int GraphicsStateGuardian::get_driver_version_minor() { return -1; }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_shader_version_major
// Access: Public, Virtual
// Description: Returns the major version of the shader model
////////////////////////////////////////////////////////////////////
int GraphicsStateGuardian::get_driver_shader_version_major() { return -1; }
////////////////////////////////////////////////////////////////////
// Function: GraphicsStateGuardian::get_driver_shader_version_minor
// Access: Public, Virtual
// Description: Returns the minor version of the shader model
////////////////////////////////////////////////////////////////////
int GraphicsStateGuardian::get_driver_shader_version_minor() { return -1; }

View File

@ -191,6 +191,15 @@ PUBLISHED:
#endif
PUBLISHED:
virtual string get_driver_vendor();
virtual string get_driver_renderer();
virtual string get_driver_version();
virtual int get_driver_version_major();
virtual int get_driver_version_minor();
virtual int get_driver_shader_version_major();
virtual int get_driver_shader_version_minor();
bool set_scene(SceneSetup *scene_setup);
virtual SceneSetup *get_scene() const;

View File

@ -276,6 +276,16 @@ fix_component_ordering(PTA_uchar &new_image,
return result;
}
//#--- Zhao Nov/2011
string CLP(GraphicsStateGuardian)::get_driver_vendor() { return _gl_vendor; }
string CLP(GraphicsStateGuardian)::get_driver_renderer() { return _gl_renderer; }
string CLP(GraphicsStateGuardian)::get_driver_version() { return _gl_version; }
int CLP(GraphicsStateGuardian)::get_driver_version_major() { return _gl_version_major; }
int CLP(GraphicsStateGuardian)::get_driver_version_minor() { return _gl_version_minor; }
int CLP(GraphicsStateGuardian)::get_driver_shader_version_major() { return _gl_shadlang_ver_major; }
int CLP(GraphicsStateGuardian)::get_driver_shader_version_minor() { return _gl_shadlang_ver_minor; }
////////////////////////////////////////////////////////////////////
// Function: GLGraphicsStateGuardian::Constructor
// Access: Public
@ -5398,6 +5408,24 @@ query_gl_version() {
<< _gl_version_major << "." << _gl_version_minor
<< "\n";
}
if (_gl_version_major==1) {
const char *extstr = (const char *) GLP(GetString)(GL_EXTENSIONS);
if (extstr != NULL) {
if (strstr( extstr, "GL_ARB_shading_language_100") != NULL)
{
_gl_shadlang_ver_major = 1;
_gl_shadlang_ver_minor = 0;
}
}
}
else if (_gl_version_major >= 2) {
const char *verstr = (const char *) GLP(GetString)(GL_SHADING_LANGUAGE_VERSION);
if ((verstr == NULL) || (sscanf(verstr, "%d.%d", &_gl_shadlang_ver_major, &_gl_shadlang_ver_minor) != 2))
{
GLCAT.warning() << "Invalid GL_SHADING_LANGUAGE_VERSION format.\n";
}
}
}
}

View File

@ -186,6 +186,15 @@ public:
CLP(GraphicsStateGuardian)(GraphicsEngine *engine, GraphicsPipe *pipe);
virtual ~CLP(GraphicsStateGuardian)();
//#--- Zhao Nov/2011
virtual string get_driver_vendor();
virtual string get_driver_renderer();
virtual string get_driver_version();
virtual int get_driver_version_major();
virtual int get_driver_version_minor();
virtual int get_driver_shader_version_major();
virtual int get_driver_shader_version_minor();
virtual void reset();
virtual void prepare_display_region(DisplayRegionPipelineReader *dr);
@ -520,6 +529,8 @@ protected:
string _gl_renderer;
string _gl_version;
int _gl_version_major, _gl_version_minor;
//#--- Zhao Nov/2011
int _gl_shadlang_ver_major, _gl_shadlang_ver_minor;
pset<string> _extensions;
public: