⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cskybox.h

📁 Ion Team Lord Of The Rings Demo 模拟指环王的3D游戏 VS.NET编译 里面提供高级渲染算法
💻 H
字号:
///////////////////////////////////////////////////////
//	SkyBox code ,by HiperBlaster
////////////////////////////////////////////////////

class CSkyBox
  {
  public:
    ~CSkyBox();
    void Init(char *filename,char *ext);
    void Render();
  private:
    GLuint texl;	//left
    GLuint texr;	//right
    GLuint texf;	//front
    GLuint texb;	//back
    GLuint texd;	//down
    GLuint texu;	//up
  }
;

/////////////////////////////////////////////////////////////////
CSkyBox::~CSkyBox()
{
  glDeleteTextures(1,&texl);
  glDeleteTextures(1,&texr);
  glDeleteTextures(1,&texf);
  glDeleteTextures(1,&texb);
  glDeleteTextures(1,&texu);
  glDeleteTextures(1,&texd);
}

///////////////////////////////////////////////////////////////////


void CSkyBox::Init(char *filename,char *ext)
{
  char string[80];

  sprintf(string,"%sl.%s",filename,ext);
  texl=LoadTexture(string,CT_FIND,CT_MIPMAP);

  sprintf(string,"%sr.%s",filename,ext);
  texr=LoadTexture(string,CT_FIND,CT_MIPMAP);

  sprintf(string,"%sf.%s",filename,ext);
  texf=LoadTexture(string,CT_FIND,CT_MIPMAP);

  sprintf(string,"%sb.%s",filename,ext);
  texb=LoadTexture(string,CT_FIND,CT_MIPMAP);

  sprintf(string,"%su.%s",filename,ext);
  texu=LoadTexture(string,CT_FIND,CT_MIPMAP);

  sprintf(string,"%sd.%s",filename,ext);
  texd=LoadTexture(string,CT_FIND,CT_MIPMAP);
}

/////////////////////////////////////////////////

void CSkyBox::Render()
{

  glDisable(GL_DEPTH_TEST);
	glDisable(GL_LIGHTING);

  Bind(texb);
	glColor3f(1.0f,1.0f,1.0f);
  glBegin(GL_QUADS);
  // Front Face
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f(-4.0f, -4.0f,  4.0f);	// Bottom Left Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f( 4.0f, -4.0f,  4.0f);	// Bottom Right Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f( 4.0f,  4.0f,  4.0f);	// Top Right Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f,  4.0f);	// Top Left Of The Texture and Quad
  glEnd();
  Bind(texf);
  glBegin(GL_QUADS);
  // Back Face
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f(-4.0f, -4.0f, -4.0f);	// Bottom Right Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f, -4.0f);	// Top Right Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f( 4.0f,  4.0f, -4.0f);	// Top Left Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f( 4.0f, -4.0f, -4.0f);	// Bottom Left Of The Texture and Quad
  glEnd();
  Bind(texr);
  glBegin(GL_QUADS);

  // Right face
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f( 4.0f, -4.0f, -4.0f);	// Bottom Right Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f( 4.0f,  4.0f, -4.0f);	// Top Right Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f( 4.0f,  4.0f,  4.0f);	// Top Left Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f( 4.0f, -4.0f,  4.0f);	// Bottom Left Of The Texture and Quad
  glEnd();
  Bind(texl);
  glBegin(GL_QUADS);

  // Left Face
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f(-4.0f, -4.0f, -4.0f);	// Bottom Left Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f(-4.0f, -4.0f,  4.0f);	// Bottom Right Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f,  4.0f);	// Top Right Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f, -4.0f);	// Top Left Of The Texture and Quad
  glEnd();
  Bind(texu);
  glBegin(GL_QUADS);
  // Top Face
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f, -4.0f);	// Top Left Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f(-4.0f,  4.0f,  4.0f);	// Bottom Left Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f( 4.0f,  4.0f,  4.0f);	// Bottom Right Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f( 4.0f,  4.0f, -4.0f);	// Top Right Of The Texture and Quad
  /*		glTexCoord2f(0.001953135f, 0.998046875f); glVertex3f(-0.998046875f,  0.998046875f, -0.998046875f);	// Top Left Of The Texture and Quad
  		glTexCoord2f(0.001953135f, 0.001953135f); glVertex3f(-0.998046875f,  0.998046875f,  0.998046875f);	// Bottom Left Of The Texture and Quad
  		glTexCoord2f(0.998046875f, 0.001953135f); glVertex3f( 0.998046875f,  0.998046875f,  0.998046875f);	// Bottom Right Of The Texture and Quad
  		glTexCoord2f(0.998046875f, 0.998046875f); glVertex3f( 0.998046875f,  0.998046875f, -0.998046875f);	// Top Right Of The Texture and Quad
  */

  glEnd();
  Bind(texd);
  glBegin(GL_QUADS);
  // Bottom Face
  glTexCoord2f(0.998046875f, 0.998046875f);
  glVertex3f(-4.0f, -4.0f, -4.0f);	// Top Right Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.998046875f);
  glVertex3f( 4.0f, -4.0f, -4.0f);	// Top Left Of The Texture and Quad
  glTexCoord2f(0.001953135f, 0.001953135f);
  glVertex3f( 4.0f, -4.0f,  4.0f);	// Bottom Left Of The Texture and Quad
  glTexCoord2f(0.998046875f, 0.001953135f);
  glVertex3f(-4.0f, -4.0f,  4.0f);	// Bottom Right Of The Texture and Quad
  glEnd();

  glEnable(GL_DEPTH_TEST);
	glEnable(GL_LIGHTING);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -