Скачиваний:
15
Добавлен:
01.05.2014
Размер:
39.38 Кб
Скачать
// TRoom.cpp : implementation file
//

#include "stdafx.h"
#include "GLlab.h"
#include "TRoom.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// TRoom

IMPLEMENT_DYNCREATE(TRoom, CDocument)

TRoom::TRoom()
{
}

BOOL TRoom::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;
	return TRUE;
}

TRoom::~TRoom()
{
}


BEGIN_MESSAGE_MAP(TRoom, CDocument)
	//{{AFX_MSG_MAP(TRoom)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// TRoom diagnostics

#ifdef _DEBUG
void TRoom::AssertValid() const
{
	CDocument::AssertValid();
}

void TRoom::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// TRoom serialization

void TRoom::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// TRoom commands
void TRoom::DrawMe()
{glTranslatef(0,0,0.92);
 
 GLUquadricObj *quadObj1; 

 quadObj1 = gluNewQuadric(); 
 glTranslatef(0,0.5,0);	 
 glColor3d(0,1,1);
 gluQuadricDrawStyle(quadObj1, GLU_FILL); 
 gluSphere(quadObj1, 0.07, 20, 20); 
 
 glTranslatef(0,-0.03,0);
 glRotated(90,1,0,0);
 gluQuadricDrawStyle(quadObj1, GLU_FILL); 
 gluCylinder(quadObj1, 0.015, 0.02, 0.05, 20, 20); 
 glRotated(-90,1,0,0);

 glTranslatef(0,-0.47,0);

 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 
 glTranslatef(0,0.36,0);
 glBegin(GL_QUADS);

	glVertex3f( -0.07f, 0.07f, -0.07f);
	glVertex3f( -0.07f, 0.07f, 0.07f);
	glVertex3f( 0.07f, 0.07f, 0.07f);
	glVertex3f( 0.07f, 0.07f, -0.07f);

	glVertex3f( -0.07f, -0.07f, -0.07f);
	glVertex3f( -0.07f, -0.07f, 0.07f);
	glVertex3f( 0.07f, -0.07f, 0.07f);
	glVertex3f( 0.07f, -0.07f, -0.07f);

	glVertex3f( -0.07f, -0.07f, 0.07f);
	glVertex3f( -0.07f, 0.07f, 0.07f);
	glVertex3f( 0.07f, 0.07f, 0.07f);
	glVertex3f( 0.07f, -0.07f, 0.07f);

	glVertex3f( -0.07f, -0.07f, -0.07f);
	glVertex3f( -0.07f, 0.07f, -0.07f);
	glVertex3f( 0.07f, 0.07f, -0.07f);
	glVertex3f( 0.07f, -0.07f, -0.07f);

	glVertex3f( -0.07f, -0.07f, -0.07f);
	glVertex3f( -0.07f, -0.07f, 0.07f);
	glVertex3f( -0.07f, 0.07f, 0.07f);
	glVertex3f( -0.07f, 0.07f, -0.07f);

	glVertex3f( 0.07f, -0.07f, -0.07f);
	glVertex3f( 0.07f, -0.07f, 0.07f);
	glVertex3f( 0.07f, 0.07f, 0.07f);
	glVertex3f( 0.07f, 0.07f, -0.07f);

 glEnd();
 
                                                                                                                                                          
 glBegin(GL_TRIANGLES);
	
	glVertex3f( 0.07f, 0.07f, 0.0f);
	glVertex3f( 0.15f, 0.07f, 0.0f);
	glVertex3f( 0.07f, 0.04f, 0.07f);

	glVertex3f( 0.07f, 0.07f, 0.0f);
	glVertex3f( 0.15f, 0.07f, 0.0f);
	glVertex3f( 0.07f, 0.04f, -0.07f);


	glVertex3f( -0.07f, 0.07f, 0.0f);
	glVertex3f( -0.15f, 0.07f, 0.0f);
	glVertex3f( -0.07f, 0.04f, 0.07f);

	glVertex3f( -0.07f, 0.07f, 0.0f);
	glVertex3f( -0.15f, 0.07f, 0.0f);
	glVertex3f( -0.07f, 0.04f, -0.07f);


	glVertex3f( 0.07f, -0.07f, 0.0f);
	glVertex3f( 0.07f, -0.15f, 0.0f);
	glVertex3f( 0.04f, -0.07f, 0.07f);

	glVertex3f( 0.07f, -0.07f, 0.0f);
	glVertex3f( 0.07f, -0.15f, 0.0f);
	glVertex3f( 0.04f, -0.07f, -0.07f);


	glVertex3f( -0.07f, -0.07f, 0.0f);
	glVertex3f( -0.07f, -0.15f, 0.0f);
	glVertex3f( -0.04f, -0.07f, 0.07f);

	glVertex3f( -0.07f, -0.07f, 0.0f);
	glVertex3f( -0.07f, -0.15f, 0.0f);
	glVertex3f( -0.04f, -0.07f, -0.07f);
 glEnd();
 
 gluDeleteQuadric(quadObj1);

glLoadIdentity();
}

//--------------------------------------------------------
void TRoom::InitScene()
{	glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //Черный цвет фона
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);

	glLoadIdentity();   
//Вставить инициализацию

   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   
   gluPerspective(50.0, 1, 0.1, 100.0);

   gluLookAt( 0,0.5,0.9, 0,0.5,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );


}

void TRoom::DisScene()	
{   glDisable(GL_LIGHT2);
	glDisable(GL_LIGHT1);
	glDisable(GL_LIGHTING);
	glDisable(GL_COLOR_MATERIAL);

	glDisable(GL_DEPTH_TEST);

}

void TRoom::InitLight()
{//Освещение
	GLfloat LightPosition2[]={2.0,2.0,2.0,0.0};
	GLfloat LightDir2[]={-2.0,-2.0,-2.0,0.0};

	GLfloat LightAmbient[]= { 0.5, 0.5, 0.5, 1.0f }; 
	GLfloat LightDiffuse[]= { 0.9, 0.9, 0.9, 1.0f }; 
	GLfloat	LightSpecular[]={1.0,1.0,1.0,1.0};

	glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);    // Установка Фонового Света
	glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);    // Установка Диффузного Света
	glLightfv(GL_LIGHT1,GL_SPECULAR,LightSpecular);


	glLightfv(GL_LIGHT1, GL_POSITION, LightPosition2);   // Позиция света
	glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,LightDir2);
 
  
	glEnable(GL_DEPTH_TEST);

	glDepthFunc(GL_LEQUAL);       // Тип теста глубины

	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Улучшенные вычисления перспективы

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);

	glEnable(GL_LIGHT1);

	glLightModelf(GL_LIGHT_MODEL_TWO_SIDE , GL_TRUE);
  
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);
  
	glLighti(GL_LIGHT1, GL_SPOT_EXPONENT, 0); 
	glLighti(GL_LIGHT1, GL_SPOT_CUTOFF, 90); 


}


void TRoom::Teni()
{   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 


	glBegin(GL_QUADS);		//Пол
	glColor4f(0.0,0.0,0.0,0.35);

	glVertex3f( -0.5f, 0.01f, 0.5f);

	glVertex3f( -0.5f, 0.01f, -0.5f);

	glVertex3f( 0.5f, 0.01f, -0.5f);

	glVertex3f( 0.5f, 0.01f, 0.5f);
	glEnd();

	glDisable(GL_BLEND);

}

void TRoom::DrawShkaf()
{	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 

	glBindTexture(GL_TEXTURE_2D, texture[6]);
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.8f, 0.0f, -1.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.8f, 0.8f, -1.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.8f, 0.8f, 0.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.8f, 0.0f, 0.0f);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[7]);
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.8f, 0.0f, 0.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.8f, 0.8f, 0.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.8f, 0.2f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 0.0f, 0.2f);


	glVertex3f( 0.8f, 0.8f, 0.0f);
	glVertex3f( 0.8f, 0.8f, -1.0f); 
	glVertex3f( 1.0f, 0.8f, -1.0f);
	glVertex3f( 1.0f, 0.8f, 0.0f);
	glEnd();

	glBegin(GL_TRIANGLES);
	glVertex3f(0.8f, 0.8f,0.0f);
	glVertex3f(1.0f, 0.8f,0.2f);
	glVertex3f(1.0f, 0.8f,0.0f);
	glEnd();

	//Тень
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 
	glBegin(GL_QUADS);		
	glColor4f(0.0,0.0,0.0,0.35);

	glVertex3f( 0.8f, 0.0f, 0.01f);

	glVertex3f( 0.8f, 0.8f, 0.01f);

	glVertex3f( 1.0f, 0.8f, 0.21f);

	glVertex3f( 1.0f, 0.0f, 0.21f);
	glEnd();
	
	glBegin(GL_QUADS);		
	glColor4f(0.0,0.0,0.0,0.35);

	glVertex3f( 0.99f, 0.0f, 0.2f);

	glVertex3f( 0.99f, 0.8f, 0.2f);

	glVertex3f( 0.99f, 0.8f, 0.3f);

	glVertex3f( 0.99f, 0.0f, 0.3f);
	glEnd();

	glBegin(GL_TRIANGLES);
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(0.8f, 0.01f,0.0f);
	glVertex3f(1.0f, 0.01f,0.2f);
	glVertex3f(1.0f, 0.01f,0.3f);
	glEnd();

	glDisable(GL_BLEND);
}

void TRoom::DrawKover()
{	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 
	
	glBindTexture(GL_TEXTURE_2D, texture[8]);
	glBegin(GL_QUADS);		
	glColor3f(1.0,1.0,1.0);

	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.5f, 0.2f, 0.99f);

	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.5f, 0.9f, 0.99f);

	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.9f, 0.9f, 0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.9f, 0.2f, 0.99f);
	glEnd();


}

void TRoom::DrawObject()
{	
	GLUquadricObj *quadObj1; 
	quadObj1 = gluNewQuadric(); 
	
	// тип генерируемых нормалей для него – «сглаженные»
	gluQuadricNormals(quadObj1, GL_SMOOTH);
	// Включить текстурные координаты для объекта
	gluQuadricTexture(quadObj1, GL_TRUE);
	// Настройка сферического наложения
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	// Настройка отображения сферы
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

	glBindTexture(GL_TEXTURE_2D, texture[0]);

	glTranslatef(-0.5,0,0.5);
	glRotated(-90,1,0,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.3, 0.0, 0.6, 20, 20); 

//	gluSphere(quadObj1, 0.35f, 32, 16);// Рисование первого мяча

	glRotated(90,1,0,0);
	glTranslatef(0.5,0,-0.5);

	gluDeleteQuadric(quadObj1);
}

void TRoom::DrawTree(float x,float y)
{	GLUquadricObj *quadObj1; 
	quadObj1 = gluNewQuadric();

	gluQuadricNormals(quadObj1, GL_SMOOTH);
	gluQuadricTexture(quadObj1, GL_TRUE);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

	glBindTexture(GL_TEXTURE_2D, texture[9]);
//------------------------------

	glTranslatef(x,0.5,y);
	glRotated(-90,1,0,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.15, 0.0, 0.3, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,-0.5,-y);
//----------------------------------

	glTranslatef(x,0.48,y);
	glRotated(-90,1,0,0);

	glColor3d(0,0,0);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.1, 0.15, 0.02, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,-0.48,-y);
//-----------------------------------
	glTranslatef(x,0.23,y);
	glRotated(-90,1,0,0);
	
	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.25, 0.1, 0.25, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,-0.23,-y);
//-----------------------------------
	glTranslatef(x,0.21,y);
	glRotated(-90,1,0,0);

	glColor3d(0,0,0);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.20, 0.25, 0.02, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,-0.21,-y);
//-----------------------------------
	glTranslatef(x,0.06,y);
	glRotated(-90,1,0,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.3, 0.20, 0.15, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,-0.06,-y);
//-----------------------------------
	glTranslatef(x,0.0,y);
	glRotated(-90,1,0,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.02, 0.02, 0.07, 20, 20); 

	glRotated(90,1,0,0);
	glTranslatef(-x,0.0,-y);
//-----------------------------------

	//Тень
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.13f, 0.45f, 0.99);
	glVertex3f( x, 0.75f, 0.99);
	glVertex3f( x+0.13f, 0.45f, 0.99);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.13f, 0.45f, 0.99);
	glVertex3f( x-0.11, 0.43f, 0.99);
	glVertex3f( x+0.11f, 0.43f, 0.99);
	glVertex3f( x+0.13f, 0.45f, 0.99);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.11f, 0.43f, 0.99);
	glVertex3f( x-0.22, 0.2f, 0.99);
	glVertex3f( x+0.22f, 0.2f, 0.99);
	glVertex3f( x+0.11f, 0.43f, 0.99);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.22f, 0.2f, 0.99);
	glVertex3f( x-0.2, 0.18f, 0.99);
	glVertex3f( x+0.2f, 0.18f, 0.99);
	glVertex3f( x+0.22f, 0.2f, 0.99);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.2f, 0.18f, 0.99);
	glVertex3f( x-0.25, 0.01f, 0.99);
	glVertex3f( x+0.25f, 0.01f, 0.99);
	glVertex3f( x+0.2f, 0.18f, 0.99);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.28f, 0.01f, 0.8);
	glVertex3f( x-0.25, 0.01f, 0.99);
	glVertex3f( x+0.25f, 0.01f, 0.99);
	glVertex3f( x+0.28f,0.01f, 0.8);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f(x-0.27f, 0.01f, 0.8);
	glVertex3f( x-0.23, 0.01f, 0.7);
	glVertex3f( x+0.23f, 0.01f, 0.7);
	glVertex3f( x+0.27f,0.01f, 0.8);
	glEnd();

	glDisable(GL_BLEND);


	gluDeleteQuadric(quadObj1);

}

void TRoom::DrawWindow()
{	//Тень
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( -0.42f, 0.28f, -0.99f);
	glVertex3f( -0.42f, 0.28f, -0.90f);
	glVertex3f( 0.42f, 0.28f, -0.90f);
	glVertex3f( 0.42f, 0.28f, -0.99f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( -0.42f, 0.28f, -1.0f);
	glVertex3f( -0.40f, 0.24f, -1.0f);
	glVertex3f( 0.40f, 0.24f, -1.0f);
	glVertex3f( 0.42f, 0.28f, -1.0f);
	glEnd();
	glDisable(GL_BLEND);

	
	float amb[]={1.0,1.0,1.0,1.0};
		
	glMaterialfv(GL_FRONT_AND_BACK ,GL_AMBIENT,amb);
	glMaterialfv(GL_FRONT_AND_BACK ,GL_DIFFUSE ,amb);
	glMaterialfv(GL_FRONT_AND_BACK ,GL_SPECULAR ,amb);
	glMaterialfv(GL_FRONT_AND_BACK ,GL_EMISSION ,amb);	

	glBindTexture(GL_TEXTURE_2D, texture[10]);
	
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,1.0);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.4f, 0.3f, -0.97f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.4f, 0.8f, -0.97f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.4f, 0.8f, -0.97f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.4f, 0.3f, -0.97f);
	glEnd();

		//Рама
	glBindTexture(GL_TEXTURE_2D, texture[11]);
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,1.0);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.38f, 0.28f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.99f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.42f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.38f, 0.28f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.38f, 0.28f, -0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.82f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.38f, 0.82f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.38f, 0.28f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.38f, 0.28f, -0.99f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.38f, 0.28f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.42f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.38f, 0.82f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.82f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.38f, 0.78f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.38f, 0.78f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.38f, 0.78f, -0.99f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.38f, 0.78f, -0.93f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.38f, 0.78f, -0.93f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.38f, 0.78f, -0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.38f, 0.82f, -0.93f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.38f, 0.82f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.38f, 0.82f, -0.93f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.90f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.32f, -0.90f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.32f, -0.90f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.90f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.99f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.32f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.42f, 0.32f, -0.90f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.90f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.28f, -0.99f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.28f, -0.90f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.28f, -0.90f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.90f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.42f, 0.32f, -0.90f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.32f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.28f, -0.99f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.42f, 0.32f, -0.90f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.42f, 0.32f, -0.99f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.42f, 0.32f, -0.99f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.42f, 0.32f, -0.9f);
	glEnd();

}

void TRoom::DrawTable(float x,float y)
{		//Тень
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 
	glBindTexture(GL_TEXTURE_2D, texture[2]);
	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x-0.25f, 0.0f, y+0.05f);
	glVertex3f( x-0.02f, 0.0f, 1.0f);
	glVertex3f( x+0.02f, 0.0f, 1.0f);
	glVertex3f( x-0.21f, 0.0f, y+0.05f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x+0.16f, 0.0f, y+0.22f);
	glVertex3f( x+0.02f, 0.0f, 1.0f);
	glVertex3f( x-0.02f, 0.0f, 1.0f);
	glVertex3f( x+0.12f, 0.0f, y+0.22f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x+0.11f, 0.0f, y-0.2f);
	glVertex3f( x+0.02f, 0.0f, 1.0f);
	glVertex3f( x-0.02f, 0.0f, 1.0f);
	glVertex3f( x+0.07f, 0.0f, y-0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x-0.2f, 0.16f, y+0.2f);
	glVertex3f( x-0.2f, 0.18f, y+0.2f);
	glVertex3f( x+0.2f, 0.18f, y+0.2f);
	glVertex3f( x+0.2f, 0.16f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x-0.2f, 0.16f, y-0.2f);
	glVertex3f( x-0.2f, 0.18f, y-0.2f);
	glVertex3f( x+0.2f, 0.18f, y-0.2f);
	glVertex3f( x+0.2f, 0.16f, y-0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x-0.2f, 0.16f, y-0.2f);
	glVertex3f( x-0.2f, 0.18f, y-0.2f);
	glVertex3f( x-0.2f, 0.18f, y+0.2f);
	glVertex3f( x-0.2f, 0.16f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glVertex3f( x+0.2f, 0.16f, y-0.2f);
	glVertex3f( x+0.2f, 0.18f, y-0.2f);
	glVertex3f( x+0.2f, 0.18f, y+0.2f);
	glVertex3f( x+0.2f, 0.16f, y+0.2f);
	glEnd();
	glDisable(GL_BLEND); 



	GLUquadricObj *quadObj1; 
	quadObj1 = gluNewQuadric();

	gluQuadricNormals(quadObj1, GL_SMOOTH);
	gluQuadricTexture(quadObj1, GL_TRUE);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

	glBindTexture(GL_TEXTURE_2D, texture[12]);
//------------------------------

	glTranslatef(x,0.14,y);
	glRotated(45,1,1,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.015, 0.015, 0.3, 20, 20); 

	glRotated(-45,1,1,0);
	glTranslatef(-x,-0.14,-y);
//----------------------------------
	
	glTranslatef(x,0.14,y);
	glRotated(120,0,1,0);
	glRotated(45,1,1,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.015, 0.015, 0.3, 20, 20); 

	glRotated(-45,1,1,0);
	glRotated(-120,0,1,0);
	glTranslatef(-x,-0.14,-y);
//----------------------------------
	glTranslatef(x,0.14,y);
	glRotated(240,0,1,0);
	glRotated(45,1,1,0);

	glColor3d(1,1,1);
	gluQuadricDrawStyle(quadObj1, GLU_FILL); 

	gluCylinder(quadObj1, 0.015, 0.015, 0.3, 20, 20); 

	glRotated(-45,1,1,0);
	glRotated(-240,0,1,0);
	glTranslatef(-x,-0.14,-y);
//----------------------------------
	glBindTexture(GL_TEXTURE_2D, texture[11]);
	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x-0.2f, 0.18f, y+0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x-0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x+0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x+0.2f, 0.18f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x-0.2f, 0.16f, y+0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x-0.2f, 0.16f, y-0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x+0.2f, 0.16f, y-0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x+0.2f, 0.16f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x-0.2f, 0.16f, y+0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x-0.2f, 0.18f, y+0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x+0.2f, 0.18f, y+0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x+0.2f, 0.16f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x-0.2f, 0.16f, y-0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x-0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x+0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x+0.2f, 0.16f, y-0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x-0.2f, 0.16f, y-0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x-0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x-0.2f, 0.18f, y+0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x-0.2f, 0.16f, y+0.2f);
	glEnd();

	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.35);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( x+0.2f, 0.16f, y-0.2f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( x+0.2f, 0.18f, y-0.2f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( x+0.2f, 0.18f, y+0.2f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( x+0.2f, 0.16f, y+0.2f);
	glEnd();

	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
	
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_BLEND); 
	glBindTexture(GL_TEXTURE_2D, texture[9]);
	glBegin(GL_POLYGON);		
	glColor4f(0.0,0.0,0.0,0.15);
	glVertex3f( x-0.3f, 0.0f, 0.99f);
	glVertex3f( x-0.3f, 0.03f, 0.99f);
	glVertex3f( x+0.3f, 0.03f, 0.99f);
	glVertex3f( x+0.3f, 0.0f, 0.99f);
	glEnd();

	glEnd();
	glDisable(GL_BLEND); 

}

void TRoom::DrawDoor()
{
	glBindTexture(GL_TEXTURE_2D, texture[11]);
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,1);
	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.0f, 0.4);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.4);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.44);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.0f, 0.44);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.0f, 0.8);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.8);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.84);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.0f, 0.84);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.66f, 0.44);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.44);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.8);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.66f, 0.8);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(1.0, 0.0f, 0.4);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 1.0, 0.7, 0.4);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.4);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.0f, 0.4);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.0f, 0.84);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.84);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 1.0, 0.7, 0.84);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(1.0, 0.0f, 0.84);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.0f, 0.44);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.66, 0.44);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 1.0, 0.66, 0.44);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(1.0, 0.0f, 0.44);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(1.0, 0.0f, 0.8);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 1.0, 0.66, 0.8);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.66, 0.8);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.0f, 0.8);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(1.0, 0.7, 0.4);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 1.0, 0.7, 0.84);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.98, 0.7, 0.84);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.98, 0.7, 0.4);

	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.98f, 0.66, 0.44);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.98, 0.66, 0.8);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 1.0, 0.66, 0.8);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(1.0, 0.66, 0.44);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[13]);
	glBegin(GL_QUADS);		
	glColor4f(1,1,1,1);
	glTexCoord2f(0.0f, 0.0f);glVertex3f(0.99f, 0.0f, 0.44);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 0.99, 0.7, 0.44);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( 0.99, 0.7, 0.8);
	glTexCoord2f(1.0f, 0.0f);glVertex3f(0.99, 0.0f, 0.8);
	glEnd();

}

void TRoom::DrawLeftWall(float param)
{
	glBindTexture(GL_TEXTURE_2D, texture[2]);
	glBegin(GL_QUADS);		//Лев
	glColor4f(1,1,1,param);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( -1.0f, 0.0f, 1.0f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( -1.0f, 1.0f, 1.0f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( -1.0f, 1.0f, -1.0f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( -1.0f, 0.0f, -1.0f);
	glEnd();

}

void TRoom::DrawFloor(float param)
{
	glBindTexture(GL_TEXTURE_2D, texture[0]);
    glBegin(GL_QUADS);		//Пол
	glColor4f(1,1,1,param);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, 0.0f, -1.0f);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, 0.0f, 1.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 0.0f, 1.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.0f, -1.0f);
	glEnd();

}

void TRoom::ReflRoom(int side)
{	
	
	if (side==0)
	{glMatrixMode(GL_PROJECTION);
	glMatrixMode(GL_MODELVIEW);
	glCullFace(GL_FRONT); // отсекаем лицевые грани
 
	glScalef(1.0, -1.0, 1.0);
	
	DrawRoom();
/*	
	glTranslatef(-2.0, 0.0, 0.0);
	glScalef(-1.0, 1.0, 1.0);
				
	DrawRoom();

	glScalef(-1.0, 1.0, 1.0);
	glTranslatef(2.0, 0.0, 0.0);
*/
	glScalef(1.0, -1.0, 1.0);


	glCullFace(GL_BACK);
    glMatrixMode(GL_PROJECTION);
 
    glMatrixMode(GL_MODELVIEW);

	}
	else
	{if (side==1)
			{	glMatrixMode(GL_PROJECTION);
				glMatrixMode(GL_MODELVIEW);
				glCullFace(GL_FRONT); // отсекаем лицевые грани

				glTranslatef(-2.0, 0.0, 0.0);
				glScalef(-1.0, 1.0, 1.0);
				
				DrawRoom();
				DrawFloor(1.0);

				glScalef(-1.0, 1.0, 1.0);
				glTranslatef(2.0, 0.0, 0.0);
				
				 glCullFace(GL_BACK);
				glMatrixMode(GL_PROJECTION);
				glMatrixMode(GL_MODELVIEW);

			}
	}

}

void TRoom::DrawRoom()
{ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 


	glBindTexture(GL_TEXTURE_2D, texture[3]);
	glBegin(GL_QUADS);		//Фронт
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, 0.0f, -1.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, 1.0f, -1.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 0.0f, -1.0f);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[3]);
	glBegin(GL_QUADS);		//Прав
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 0.0f, 1.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 0.0f, -1.0f);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[1]);
	glBegin(GL_QUADS);		//Потолок
	glColor4f(1,1,1,0.9);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, 1.0f, -1.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, 1.0f, 1.0f);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[3]);
	glBegin(GL_QUADS);		//Тыл
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f);glVertex3f( 1.0f, 1.0f, 1.0f);
	glTexCoord2f(0.0f, 1.0f);glVertex3f( 1.0f, 0.0f, 1.0f);
	glTexCoord2f(1.0f, 1.0f);glVertex3f( -1.0f, 0.0f, 1.0f);
	glTexCoord2f(1.0f, 0.0f);glVertex3f( -1.0f, 1.0f, 1.0f);
	glEnd();


	//Лев
	glBindTexture(GL_TEXTURE_2D, texture[4]);
	glBegin(GL_QUADS);
	glColor4f(1,1,1,0.9);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.99f, 0.0f, 1.0f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.99f, 1.0f, 1.0f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.99f, 1.0f, 0.8f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.99f, 0.0f, 0.8f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.99f, 0.0f, -0.8f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.99f, 1.0f, -0.8f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.99f, 1.0f, -1.0f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.99f, 0.0f, -1.0f);
	glEnd();

	glBindTexture(GL_TEXTURE_2D, texture[5]);
	glBegin(GL_QUADS);
	glColor4f(1,1,1,0.9);
	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.99f, 0.0f, 0.8f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.99f, 0.1f, 0.8f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.99f, 0.1f, -0.8f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.99f, 0.0f, -0.8f);

	glTexCoord2f(0.0f, 0.0f); glVertex3f( -0.99f, 0.9f, 0.8f);
	glTexCoord2f(0.0f, 1.0f); glVertex3f( -0.99f, 1.0f, 0.8f);
	glTexCoord2f(1.0f, 1.0f); glVertex3f( -0.99f, 1.0f, -0.8f);
	glTexCoord2f(1.0f, 0.0f); glVertex3f( -0.99f, 0.9f, -0.8f);
	glEnd();

//	DrawObject();
	DrawShkaf();
	DrawKover();
	DrawTree(-0.5,0.6);
	
	DrawWindow();
	DrawTable(0,-0.2);
	
	DrawDoor();

}

void TRoom::InitTexture()
{// Загрузка картинки---------------------------
	AUX_RGBImageRec *texture1;					// массив для текстур

	texture1 = auxDIBImageLoad("D:/Texture/Pol.bmp");

	glGenTextures(1, &texture[0]);
	glBindTexture(GL_TEXTURE_2D, texture[0]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
//--------------------------------------------------
	AUX_RGBImageRec *texture2;					// массив для текстур

	texture2 = auxDIBImageLoad("D:/Texture/Potolok.bmp");

	glGenTextures(1, &texture[1]);
	glBindTexture(GL_TEXTURE_2D, texture[1]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture2->sizeX, texture2->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture2->data);
//----------------------------------------------------
	AUX_RGBImageRec *texture3;					// массив для текстур

	texture3 = auxDIBImageLoad("D:/Texture/ten.bmp");

	glGenTextures(1, &texture[2]);
	glBindTexture(GL_TEXTURE_2D, texture[2]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture3->sizeX, texture3->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture3->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture4;					// массив для текстур

	texture4 = auxDIBImageLoad("D:/Texture/Wall2.bmp");

	glGenTextures(1, &texture[3]);
	glBindTexture(GL_TEXTURE_2D, texture[3]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture4->sizeX, texture4->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture4->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture5;					// массив для текстур

	texture5 = auxDIBImageLoad("D:/Texture/Rwall.bmp");

	glGenTextures(1, &texture[4]);
	glBindTexture(GL_TEXTURE_2D, texture[4]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture5->sizeX, texture5->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture5->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture6;					// массив для текстур

	texture6 = auxDIBImageLoad("D:/Texture/Rwall2.bmp");

	glGenTextures(1, &texture[5]);
	glBindTexture(GL_TEXTURE_2D, texture[5]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture6->sizeX, texture6->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture6->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture7;					// массив для текстур

	texture7 = auxDIBImageLoad("D:/Texture/shkaf.bmp");

	glGenTextures(1, &texture[6]);
	glBindTexture(GL_TEXTURE_2D, texture[6]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture7->sizeX, texture7->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture7->data);
//---------------------------------------------------------
		AUX_RGBImageRec *texture8;					// массив для текстур

	texture8 = auxDIBImageLoad("D:/Texture/skaf_b.bmp");

	glGenTextures(1, &texture[7]);
	glBindTexture(GL_TEXTURE_2D, texture[7]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture8->sizeX, texture8->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture8->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture9;					// массив для текстур

	texture9 = auxDIBImageLoad("D:/Texture/kover.bmp");

	glGenTextures(1, &texture[8]);
	glBindTexture(GL_TEXTURE_2D, texture[8]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture9->sizeX, texture9->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture9->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture10;					// массив для текстур

	texture10 = auxDIBImageLoad("D:/Texture/elka2.bmp");

	glGenTextures(1, &texture[9]);
	glBindTexture(GL_TEXTURE_2D, texture[9]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture10->sizeX, texture10->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture10->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture11;					// массив для текстур

	texture11 = auxDIBImageLoad("D:/Texture/wind.bmp");

	glGenTextures(1, &texture[10]);
	glBindTexture(GL_TEXTURE_2D, texture[10]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture11->sizeX, texture11->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture11->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture12;					// массив для текстур

	texture12 = auxDIBImageLoad("D:/Texture/rama.bmp");

	glGenTextures(1, &texture[11]);
	glBindTexture(GL_TEXTURE_2D, texture[11]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);


	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture12->sizeX, texture12->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture12->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture13;					// массив для текстур

	texture13 = auxDIBImageLoad("D:/Texture/table.bmp");

	glGenTextures(1, &texture[12]);
	glBindTexture(GL_TEXTURE_2D, texture[12]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture13->sizeX, texture13->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture13->data);
//---------------------------------------------------------
	AUX_RGBImageRec *texture14;					// массив для текстур

	texture14 = auxDIBImageLoad("D:/Texture/door.bmp");

	glGenTextures(1, &texture[13]);
	glBindTexture(GL_TEXTURE_2D, texture[13]);

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

	glTexImage2D(GL_TEXTURE_2D, 0, 3, texture14->sizeX, texture14->sizeY, 0,
	GL_RGB, GL_UNSIGNED_BYTE, texture14->data);
//---------------------------------------------------------
	glEnable(GL_TEXTURE_2D);		// Разрешение наложение текстуры

	glClearDepth(1.0);	
}


void TRoom::DrawScene(float angle,float z)
{	InitScene();
	InitTexture();
	InitLight();

	glTranslatef(0.0, 0.0, z);
//	glRotated(90,1,0,0);

	glRotated(angle,0,1,0);
//-----------------------------------------

	glDisable(GL_DEPTH_TEST);
	glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);

	glEnable(GL_STENCIL_TEST);
	glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
	glStencilFunc(GL_ALWAYS, 1, 0xffffffff);

	DrawFloor(1.0);

	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
	glEnable(GL_DEPTH_TEST);
	glStencilFunc(GL_EQUAL, 1, 0xffffffff);
	glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

	ReflRoom(0);

	glDisable(GL_STENCIL_TEST);

	DrawRoom();

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	
	DrawFloor(0.8);


	glDisable(GL_BLEND);
//-------------------------------------------

	glDisable(GL_DEPTH_TEST);
	glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);

	glEnable(GL_STENCIL_TEST);
	glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
	glStencilFunc(GL_ALWAYS, 1, 0xffffffff);

	DrawLeftWall(1.0);

	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
	glEnable(GL_DEPTH_TEST);
	glStencilFunc(GL_EQUAL, 1, 0xffffffff);
	glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

	ReflRoom(1);

	glDisable(GL_STENCIL_TEST);

	DrawRoom();

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	
	DrawLeftWall(0.6);

	glDisable(GL_BLEND);
//------------------------------------------

//	glRotated(-20,1,0,0);
	glRotated(-angle,0,1,0);
	glTranslatef(0.0, 0.0, -z);
	DisScene();

}
Соседние файлы в папке GLlab6