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

OpenGL

开发平台:

Visual C++

  1. // fragmentprog.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_FRAGMENTPROG_H_
  10. #define _CELENGINE_FRAGMENTPROG_H_
  11. #include <celmath/vecmath.h>
  12. #include <celutil/color.h>
  13. #include <celutil/util.h>
  14. #include <celengine/gl.h>
  15. class FragmentProcessor;
  16. namespace fp
  17. {
  18.     FragmentProcessor* initNV();
  19.     FragmentProcessor* initARB();
  20.     void enable();
  21.     void disable();
  22.     void use(unsigned int);
  23.     void parameter(unsigned int, const Vec3f&);
  24.     void parameter(unsigned int, const Point3f&);
  25.     void parameter(unsigned int, const Color&);
  26.     void parameter(unsigned int, float, float, float, float);
  27.     enum Parameter {
  28.         SunDirection       = 0,
  29.         EyePosition        = 1,
  30.         DiffuseColor       = 2,
  31.         SpecularColor      = 3,
  32.         SpecularExponent   = 4,
  33.         AmbientColor       = 5,
  34.         HazeColor          = 6,
  35.         TextureTranslation = 7,
  36.         TexGen_S           = 8,
  37.         TexGen_T           = 9,
  38.         ShadowParams0      = 20,
  39.         ShadowParams1      = 21,
  40.     };
  41.     extern unsigned int sphereShadowOnRings;
  42.     extern unsigned int eclipseShadow1;
  43.     extern unsigned int eclipseShadow2;
  44.     extern unsigned int texDiffuse;
  45.     extern unsigned int texDiffuseBump;
  46.     extern unsigned int texSpecular;
  47.     extern unsigned int texSpecularAlpha;
  48. };
  49. class FragmentProcessor
  50. {
  51.  public:
  52.     FragmentProcessor();
  53.     virtual ~FragmentProcessor();
  54.     virtual void enable() = 0;
  55.     virtual void disable() = 0;
  56.     virtual void use(unsigned int) = 0;
  57.     virtual void parameter(fp::Parameter, const Vec3f&);
  58.     virtual void parameter(fp::Parameter, const Point3f&);
  59.     virtual void parameter(fp::Parameter, const Color&);
  60.     virtual void parameter(fp::Parameter, float, float, float, float) = 0;
  61.     virtual void parameter(fp::Parameter, const float*) = 0;
  62.  private:
  63.     int dummy;
  64. };
  65. #endif // _CELENGINE_FRAGMENTPROG_H_