您的位置:程序门 -> vc/mfc -> 图形处理/算法



没分opengl  light   之1


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


没分opengl light 之1
发表于: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
//以上为头文件




快速检索

最新资讯
热门点击