00001 // -*- C++ -*- 00002 /* gdkglextmm - C++ Wrapper for GdkGLExt 00003 * Copyright (C) 2002-2003 Naofumi Yasufuku 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00018 */ 00019 00020 #ifndef _GDKMM_GL_QUERY_H 00021 #define _GDKMM_GL_QUERY_H 00022 00023 #include <glibmm.h> 00024 00025 #include <gdkmm/gl/defs.h> 00026 00027 #ifdef GDKGLEXTMM_MULTIHEAD_SUPPORT 00028 #include <gdkmm/display.h> 00029 #endif // GDKGLEXTMM_MULTIHEAD_SUPPORT 00030 00031 #include <gdk/gdkgltypes.h> 00032 00033 namespace Gdk 00034 { 00035 namespace GL 00036 { 00037 00038 /** OpenGL support information query stuff. 00039 * 00040 * 00041 */ 00042 00043 /** Indicates whether the window system supports the OpenGL extension 00044 * (GLX, WGL, etc.). 00045 * 00046 * @return <tt>true</tt> if the OpenGL is supported, 00047 * <tt>false</tt> otherwise. 00048 */ 00049 bool query_extension(); 00050 00051 #ifdef GDKGLEXTMM_MULTIHEAD_SUPPORT 00052 bool query_extension(const Glib::RefPtr<const Gdk::Display>& display); 00053 #endif // GDKGLEXTMM_MULTIHEAD_SUPPORT 00054 00055 /** Returns the version numbers of the OpenGL extension to the window system. 00056 * 00057 * In the X Window System, it returns the GLX version. 00058 * 00059 * In the Microsoft Windows, it returns the Windows version. 00060 * 00061 * @param major returns the major version number of the OpenGL extension. 00062 * @param minor returns the minor version number of the OpenGL extension. 00063 * @return <tt>false</tt> if it fails, <tt>true</tt> otherwise. 00064 */ 00065 bool query_version(int& major, int& minor); 00066 00067 #ifdef GDKGLEXTMM_MULTIHEAD_SUPPORT 00068 bool query_version(const Glib::RefPtr<const Gdk::Display>& display, 00069 int& major, int& minor); 00070 #endif // GDKGLEXTMM_MULTIHEAD_SUPPORT 00071 00072 /** Determines whether a given OpenGL extension is supported. 00073 * 00074 * There must be a valid current Gdk::GL::Drawable to call 00075 * Gdk::GL::Query::gl_extension(). 00076 * 00077 * Gdk::GL::Query::gl_extension() returns information about OpenGL extensions 00078 * only. This means that window system dependent extensions (for example, 00079 * GLX extensions) are not reported by Gdk::GL::Query::gl_extension(). 00080 * 00081 * @param extension name of OpenGL extension. 00082 * @return <tt>false</tt> if the OpenGL extension is supported, 00083 * <tt>true</tt> if not supported. 00084 */ 00085 bool query_gl_extension(const char* extension); 00086 00087 /** Determines whether a given OpenGL extension is supported. 00088 * 00089 * There must be a valid current Gdk::GL::Drawable to call 00090 * Gdk::GL::Query::gl_extension(). 00091 * 00092 * Gdk::GL::Query::gl_extension() returns information about OpenGL extensions 00093 * only. This means that window system dependent extensions (for example, 00094 * GLX extensions) are not reported by Gdk::GL::Query::gl_extension(). 00095 * 00096 * @param extension name of OpenGL extension. 00097 * @return <tt>false</tt> if the OpenGL extension is supported, 00098 * <tt>true</tt> if not supported. 00099 */ 00100 bool query_gl_extension(const Glib::ustring& extension); 00101 00102 /** Returns the address of the OpenGL extension functions. 00103 * 00104 * @param proc_name extension function name. 00105 * @return the address of the extension function named by @a proc_name. 00106 */ 00107 GdkGLProc get_proc_address(const char* proc_name); 00108 00109 /** Returns the address of the OpenGL extension functions. 00110 * 00111 * @param proc_name extension function name. 00112 * @return the address of the extension function named by @a proc_name. 00113 */ 00114 GdkGLProc get_proc_address(const Glib::ustring& proc_name); 00115 00116 } // namespace GL 00117 } // namespace Gdk 00118 00119 #endif // _GDKMM_GL_QUERY_H