glcontext.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // glcontext.h
  2. //
  3. // Copyright (C) 2003, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _CELENGINE_GLCONTEXT_H_
  10. #define _CELENGINE_GLCONTEXT_H_
  11. #include <string>
  12. #include <vector>
  13. #include <celengine/vertexprog.h>
  14. #include <celengine/fragmentprog.h>
  15. class GLContext
  16. {
  17.  public:
  18.     GLContext();
  19.     virtual ~GLContext();
  20.     enum GLRenderPath 
  21.     {
  22.         GLPath_Basic             = 0,
  23.         GLPath_Multitexture      = 1,
  24.         GLPath_NvCombiner        = 2,
  25.         GLPath_DOT3_ARBVP        = 3,
  26.         GLPath_NvCombiner_NvVP   = 4,
  27.         GLPath_NvCombiner_ARBVP  = 5,
  28.         GLPath_ARBFP_ARBVP       = 6,
  29.         GLPath_NV30              = 7,
  30.         GLPath_GLSL              = 8,
  31.     };
  32.     enum VertexPath
  33.     {
  34.         VPath_Basic              = 0,
  35.         VPath_NV                 = 1,
  36.         VPath_ARB                = 2,
  37.     };
  38.     void init(const std::vector<std::string>& ignoreExt);
  39.     
  40.     GLRenderPath getRenderPath() const { return renderPath; };
  41.     bool setRenderPath(GLRenderPath);
  42.     bool renderPathSupported(GLRenderPath) const;
  43.     GLRenderPath nextRenderPath();
  44.     bool extensionSupported(const std::string&) const;
  45.     int getMaxTextures() const { return maxSimultaneousTextures; };
  46.     bool hasMultitexture() const { return renderPath >= GLPath_Multitexture; };
  47.     bool bumpMappingSupported() const;
  48.     VertexPath getVertexPath() const;
  49.     VertexProcessor* getVertexProcessor() const;
  50.     FragmentProcessor* getFragmentProcessor() const;
  51.  private:
  52.     GLRenderPath renderPath;
  53.     VertexPath vertexPath;
  54.     VertexProcessor* vertexProc;
  55.     FragmentProcessor* fragmentProc;
  56.     int maxSimultaneousTextures;
  57.     std::vector<std::string> extensions;
  58. };
  59. #endif // _CELENGINE_GLCONTEXT_H_