Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №61 / КГ_new / GLlab6 / TRoom
.cpp// 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();
}