📄 sky.cpp
字号:
#include <windows.h>
#include <gl/Gl.h>
#include <gl/glut.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "define.h"
#include "bmpLoader.h"
#include "sky.h"
Sky::Sky(void)
{
TextureLoaded = false;
WorldHeight = 0;
WorldLength = 0;
WorldWidth = 0;
SkyObj = gluNewQuadric();
gluQuadricDrawStyle(SkyObj,GLU_FILL);
gluQuadricNormals(SkyObj, GLU_SMOOTH);
gluQuadricTexture(SkyObj, GL_TRUE);
gluQuadricOrientation(SkyObj,GLU_INSIDE);
}
Sky::~Sky(void)
{
gluDeleteQuadric(SkyObj);
if (TextureLoaded) glDeleteTextures (1,&SkyTexture);
}
void Sky::LoadSkyTexture(char *filename)
{
Image iTemp;
glEnable(GL_TEXTURE_2D);
glGenTextures(1,&SkyTexture);
glBindTexture(GL_TEXTURE_2D,SkyTexture);
ImageLoad(filename, &iTemp);
gluBuild2DMipmaps(GL_TEXTURE_2D,3,iTemp.sizeX,iTemp.sizeY,GL_RGB,GL_UNSIGNED_BYTE,iTemp.data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
free(iTemp.data);
TextureLoaded = true;
glDisable(GL_TEXTURE_2D);
}
void Sky::Draw()
{
double MAX;
MAX = WorldWidth > WorldLength ? WorldWidth : WorldLength;
MAX = MAX > WorldHeight ? MAX : WorldHeight;
MAX = sqrt(2 * MAX * MAX);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,SkyTexture);
gluSphere(SkyObj,MAX,100,100);
glEnd();
glDisable(GL_TEXTURE_2D);
}
void Sky::SetWorld(int Width,int Length,int Height)
{
WorldWidth = Width;
WorldLength = Length;
WorldHeight = Height;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -