| 发表于:2007-10-26 13:59:01 楼主 |
opengl light 的封装, 以后会有系列,能看懂就看,看不懂就算. 首次发贴. 呵呵 #pragma once #ifndef __c3dlight_h__ #define __c3dlight_h__ typedef struct mylight { glfloat pos[4]; glfloat diffuse[4]; glfloat specular[4]; glfloat ambient[4]; }lightp, *plightp; typedef struct mymateriallight { glfloat shininess; glfloat diffuse[4]; glfloat specular[4]; glfloat ambient[4]; }mlightp, *pmlightp; class c3dlight { public: c3dlight(void); virtual ~c3dlight(void); private: public: virtual void actionlight() = 0; }; /* child class metratril light set */ class c3dmetrlight : public c3dlight { public: c3dmetrlight(); virtual ~c3dmetrlight(); private: mlightp m_lightparam; public: void setambient(glfloat light); void setambient(glfloat r, glfloat g, glfloat b, glfloat a); void setambient(glfloat *light); void setspecular(glfloat light); void setspecular(glfloat r, glfloat g, glfloat b, glfloat a); void setspecular(glfloat *light); void setdiffuse(glfloat light); void setdiffuse(glfloat r, glfloat g, glfloat b, glfloat a); void setdiffuse(glfloat *light); void setshininess(glfloat light); void actionlight(); }; /* child class nomnal light set */ class c3dnormallight : public c3dlight { public: c3dnormallight(); c3dnormallight(int num); virtual ~c3dnormallight(); private: int m_num; lightp m_lightparam; public: void setambient(glfloat light); void setspecular(glfloat light); void setdiffuse(glfloat light); void setspecular(glfloat *light); void setdiffuse(glfloat *light); void setambient(glfloat *light); void setspecular(glfloat r, glfloat g, glfloat b, glfloat a); void setambient(glfloat r, glfloat g, glfloat b, glfloat a); void setdiffuse(glfloat r, glfloat g, glfloat b, glfloat a); void setpos(glfloat *pos); void setpos(glfloat x, glfloat y, glfloat z); void actionlight(); void turnofflight(); }; #endif //以上为头文件 |
|
|
|
|