Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №5 / Lab5 / LightingView
.h// LightingView.h : header file
//
#include "Light.h"
#include "OpenGLView.h"
#include "Point.h" // Added by ClassView
#include "Unitdisk.h" // Added by ClassView
class CLightingDoc;
class CLightDlg;
/////////////////////////////////////////////////////////////////////////////
// CLightingView view
const int nLights = 3;
const int nameSquare = 1;
const int nameSphere = 2;
const int nameLights = 3;
const struct{
const char *name;
GLfloat index;
} indices[] = {
{"Воздух", 1.0},
{"Лед", 1.31},
{"Вода", 1.33},
{"Цинковый кронглас", 1.517},
{"Легкий флинтглас", 1.650},
{"Тяжелый флинтглас", 1.890}
};
const int defRefractionIndex = 3;
class CLightingView : public COpenGLView
{
protected:
CLightingView(); // protected constructor used by dynamic creation
DECLARE_DYNCREATE(CLightingView)
// Attributes
public:
static GLfloat aspect;
static GLfloat eyep[3];
static GLfloat lookp[3];
static int Diskdiv;
static GLfloat squareAmbient[4];
static GLfloat squareDiffuse[4];
static GLfloat squareSpecular[4];
CLight m_lights[nLights];
Color white;
Color black;
Point m_SpherePosition;
CLightDlg *m_pDlg;
// Operations
public:
void lightsOnOff(int which, int bVal);
static float dtheta[nLights];
CLightingDoc* GetDocument();
void sceneDraw();
void shadowRefractionFullBuild(int n);
void refractionListInit(int n);
void divisionChange(int divisions);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CLightingView)
public:
virtual void OnInitialUpdate();
protected:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CLightingView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// Generated message map functions
protected:
// Функции, отвечающие за перемещения источников света
void lightsMoveUpdate(int light, int dr, int dphi, int dtheta);
int lightsMove(int light, float dr,
float dphi, float dtheta, BOOL update);
int sceneMove(int name, float dr,
float dphi, float dtheta, BOOL update);
BOOL m_bRotate;
void InitOnOff();
// Функции, отвечающие за инициализацию источников света
Unitdisk m_Refraction[nLights];
void spherediskListInit();
void shadowListInit(int n);
Unitdisk m_Shadows[nLights];
Unitdisk m_Disks[nLights];
Unitdisk m_Spheredisk;
GLfloat* m_pSpherePoints;
GLfloat m_SphereSize;
int m_Spherediv;
void diskBuild(int disk);
void sceneDrawRefracted();
void sphereListInit();
void sphereBuild();
void lightDrawListInit();
void lightsInit();
// Функции обеспечивающие изображение сцены
void sceneRasterize();
void sceneProject();
void listsInit();
void shadowDraw(int n);
//{{AFX_MSG(CLightingView)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnUpdateRotate(CCmdUI* pCmdUI);
afx_msg void OnRotate();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnCustimize();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
int m_winx;
int m_winy;
void squareListInit();
public:
BOOL drawSquare;
BOOL drawSphere;
BOOL drawRefraction;
BOOL drawShadows;
// Индикатор вывода изображения источников света
BOOL drawLights;
};
#ifndef _DEBUG // debug version in LightingView.cpp
inline CLightingDoc* CLightingView::GetDocument()
{ return (CLightingDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
Соседние файлы в папке Lab5