資源簡介
在C++環境下使用Opengl實現圓錐和圓錐的繪制,有靜態上點白色光源,使用方向鍵控制旋轉,點擊鼠標右鍵實現圓錐和圓柱間的轉換。

代碼片段和文件信息
#include?
#include
#include
#include
#include?
#include
using?namespace?std;
#define?PI?3.14159f
#define?RADIUS?50.0f
#define?BITMAP_ID?0x4D42 //?the?universal?bitmap?ID
//////?Texture?Information
BITMAPINFOHEADER bitmapInfoHeader; //?bitmap?info?header
unsigned?char* bitmapData; //?the?texture?data
unsigned?int texture; //?the?texture?object
bool?flags?=?true;
static?GLfloat?xRot?=?0.0f;
static?GLfloat?yRot?=?0.0f;
void?SpecialKeys(int?key?int?x?int?y);
void?ChangeSize(?GLsizei?w?GLsizei?h?);
void?SetupRC();
//?LoadBitmapFile
//?desc:?Returns?a?pointer?to?the?bitmap?image?of?the?bitmap?specified
//???????by?filename.?Also?returns?the?bitmap?header?information.
// ?No?support?for?8-bit?bitmaps.
unsigned?char?*LoadBitmapFile(char?*filename?BITMAPINFOHEADER?*bitmapInfoHeader)
{
FILE?*filePtr; //?the?file?pointer
BITMAPFILEHEADER bitmapFileHeader; //?bitmap?file?header
unsigned?char *bitmapImage; //?bitmap?image?data
int imageIdx?=?0; //?image?index?counter
unsigned?char tempRGB; //?swap?variable
//?open?filename?in?“read?binary“?mode
filePtr?=?fopen(filename?“rb“);
if?(filePtr?==?NULL)
return?NULL;
//?read?the?bitmap?file?header
fread(&bitmapFileHeader?sizeof(BITMAPFILEHEADER)?1?filePtr);
//?verify?that?this?is?a?bitmap?by?checking?for?the?universal?bitmap?id
if?(bitmapFileHeader.bfType?!=?BITMAP_ID)
{
fclose(filePtr);
return?NULL;
}
//?read?the?bitmap?information?header
fread(bitmapInfoHeader?sizeof(BITMAPINFOHEADER)?1?filePtr);
//?move?file?pointer?to?beginning?of?bitmap?data
fseek(filePtr?bitmapFileHeader.bfOffBits?SEEK_SET);
//?allocate?enough?memory?for?the?bitmap?image?data
bitmapImage?=?(unsigned?char*)malloc(bitmapInfoHeader->biSizeImage);
//?verify?memory?allocation
if?(!bitmapImage)
{
free(bitmapImage);
fclose(filePtr);
return?NULL;
}
//?read?in?the?bitmap?image?data
fread(bitmapImage?1?bitmapInfoHeader->biSizeImage?filePtr);
//?make?sure?bitmap?image?data?was?read
if?(bitmapImage?==?NULL)
{
fclose(filePtr);
return?NULL;
}
//?swap?the?R?and?B?values?to?get?RGB?since?the?bitmap?color?format?is?in?BGR
for?(imageIdx?=?0;?imageIdx?biSizeImage;?imageIdx+=3)
{
tempRGB?=?bitmapImage[imageIdx];
bitmapImage[imageIdx]?=?bitmapImage[imageIdx?+?2];
bitmapImage[imageIdx?+?2]?=?tempRGB;
}
//?close?the?file?and?return?the?bitmap?image?data
fclose(filePtr);
return?bitmapImage;
}
//定義光源
//光源結構
typedef?struct?tag_lightingStruct?{
GLfloat?ambient[4];
GLfloat?diffuse[4];
GLfloat?specular[4];
}?lightingStruct;
lightingStruct?coloredLighting?=?{{0.0?1.0?1.0?1.0}?{1.0?1.0?1.0?1.0}?{0.0?0.0?0.0?0.0}};
lightingStruct?*currentLighting;
//光源位置
GLfloat?light0_pos[]?=?{0.0?80.0?0.01.0};
//繪制圓錐
void?Cone()
{
float?texLeft; //?left?texture?coordinate?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????38912??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.exe
?????文件?????427628??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.ilk
?????文件?????633856??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.pdb
?????文件???46465024??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\ipch\使用opengl繪制圓柱和圓錐-5013c5b6\使用opengl繪制圓柱和圓錐-df36b874.ipch
?????文件????????722??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\cl.command.1.tlog
?????文件??????15028??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\CL.read.1.tlog
?????文件????????422??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\CL.write.1.tlog
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件??????????2??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件???????1644??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件???????3322??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件????????888??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\li
?????文件????????450??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\mt.command.1.tlog
?????文件????????446??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\mt.read.1.tlog
?????文件????????378??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\mt.write.1.tlog
?????文件????????640??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\rc.command.1.tlog
?????文件????????350??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\rc.read.1.tlog
?????文件????????358??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\rc.write.1.tlog
?????文件?????510976??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\vc100.idb
?????文件?????282624??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\vc100.pdb
?????文件????????406??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.exe.em
?????文件????????472??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.exe.em
?????文件????????381??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.exe.intermediate.manifest
?????文件?????????77??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.lastbuildstate
?????文件???????4491??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐.log
?????文件????????220??2011-11-08?17:16??使用OpenGL繪制圓柱和圓錐\使用OpenGL繪制圓柱和圓錐\Debug\使用OpenGL繪制圓柱和圓錐_manifest.rc
............此處省略17個文件信息
評論
共有 條評論