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

📄 sky.cpp

📁 一個簡單的游戲設計...好好玩的
💻 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 + -