資源簡介
一個用OpenGL寫的3D很萌的企鵝,實現了鼠標控制旋轉,鍵盤o和p設置正交投影和透視投影。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#define?PI?3.141592
static?float?c=?PI/180.0f;?//弧度和角度轉換參數
static?int?du?=?90oldmy?=?-1oldmx?=?-1;?//du是視點繞y軸的角度opengl里默認y軸是上方向
static?float?r?=?2.0fh?=?0.0f;?//r是視點繞y軸的半徑h是視點高度即在y軸
static?float?width?=?500?height?=?500;
static?bool?isPers?=?true;
void?init()?
{
glClearColor?(1.0?1.0?1.0?1.0);
glShadeModel?(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINTGL_NICEST);?
const?GLfloat?light_ambient[]??=?{?0.1f?0.1f?0.1f?1.0f?};
const?GLfloat?light_diffuse[]??=?{?1.0f?1.0f?1.0f?1.0f?};
const?GLfloat?light_specular[]?=?{?1.0f?1.0f?1.0f?1.0f?};
const?GLfloat?light_position[]?=?{?0.5f?0.5f?-0.5f?1.0f?};
const?GLfloat?mat_ambient[]????=?{?0.5f?0.5f?0.5f?1.0f?};
const?GLfloat?mat_diffuse[]????=?{?0.5f?0.5f?0.5f?1.0f?};
const?GLfloat?mat_specular[]???=?{?0.3f?0.3f?0.3f?1.0f?};
const?GLfloat?high_shininess[]?=?{?100.0f?};
glEnable(GL_LIGHT0);
????glEnable(GL_NORMALIZE);
????glEnable(GL_COLOR_MATERIAL);
????glEnable(GL_LIGHTING);
????glLightfv(GL_LIGHT0?GL_AMBIENT??light_ambient);
????glLightfv(GL_LIGHT0?GL_DIFFUSE??light_diffuse);
????glLightfv(GL_LIGHT0?GL_SPECULAR?light_specular);
????glLightfv(GL_LIGHT0?GL_POSITION?light_position);
????glMaterialfv(GL_FRONT?GL_AMBIENT???mat_ambient);
????glMaterialfv(GL_FRONT?GL_DIFFUSE???mat_diffuse);
????glMaterialfv(GL_FRONT?GL_SPECULAR??mat_specular);
????glMaterialfv(GL_FRONT?GL_SHININESS?high_shininess);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
//關閉背面頂點的計算
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE??GL_FALSE);
}
void?display()
{
glClear?(GL_COLOR_BUFFER_BIT?|?GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
if(isPers){
gluPerspective(50?1?1?10);
gluLookAt(?r?*?cos(c?*?du)?h?r?*?sin(c?*?du)
0?0?0
0?1?0);
}?else?{
glLoadIdentity();
gluOrtho2D(-(GLdouble)?height/height?(GLdouble)?height/height?-(GLdouble)?height/height?(GLdouble)?height/height);
}
static?int?list?=?0;?
if(?list?==?0?)?
{
?//?嘴的數組
GLfloat?PointA[]?=?{0?0.0?0.28}
PointB[]?=?{-0.15?0.1?0.28}
PointC[]?=?{0.15?0.1?0.28}
PointD[]?=?{0?0.1?0.45}
PointE[]?=?{0?0.15?0.28};
GLfloat?ColorR[]?=?{0?0?1};
//?組成嘴的六個三角形
glNewList(list?GL_COMPILE);
glColor3f(1?0.6?0);
glBegin(GL_TRIANGLES);???
//?平面BDC
glColor3f(1?0.6?0);
glVertex3fv(PointC);
glColor3f(1?1.0?0);
glVertex3fv(PointD);
glColor3f(1?0.6?0);
glVertex3fv(PointB);
//?平面ADB
glColor3f(1?0.6?0);
glVertex3fv(PointA);
glColor3f(1?0.6?0);
glVertex3fv(PointB);
glColor3f(1?0.8?0);
glVertex3fv(PointD);
//?平面ACD
glColor3f(1?1.0?0);
glVertex3fv(PointD);
glColor3f(1?0.6?0);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????75776??2013-10-13?22:28??Debug\Homework.exe
?????文件????1462432??2013-10-13?22:28??Debug\Homework.ilk
?????文件?????896000??2013-10-13?22:28??Debug\Homework.pdb
?????文件????????572??2013-10-13?22:28??Homework\Debug\cl.command.1.tlog
?????文件??????22226??2013-10-13?22:28??Homework\Debug\CL.read.1.tlog
?????文件????????264??2013-10-13?22:28??Homework\Debug\CL.write.1.tlog
?????文件?????????53??2013-10-13?22:28??Homework\Debug\Homework.lastbuildstate
?????文件???????1226??2013-10-13?22:28??Homework\Debug\Homework.log
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
?????文件??????????2??2013-10-13?22:28??Homework\Debug\li
............此處省略73個文件信息
- 上一篇:5G十個應用場景
- 下一篇:稀有資源宏華at2000印花分色軟件
評論
共有 條評論