資源簡介
opengl 一個有光照效果帶紋理會旋轉(zhuǎn)的立體茶壺,用c寫的,在窗口中繪制了一個漂亮的茶壺。

代碼片段和文件信息
#include
GLfloat?x1=0.0f;
GLfloat?y1=0.0f;
GLfloat?rsize=25;
GLfloat?xstep=1.0f;
GLfloat?ystep=1.0f;
GLfloat?windowWidth;
GLfloat?windowHeight;
float?xrot;
#define?stripeImageWidth?64
GLubyte?stripeImage[3*stripeImageWidth];
//定義紋理圖像
void?makeStripeImage(void)
{
int?j;
for?(j?=?0;?j? {
stripeImage[3*j]?=?200;
stripeImage[3*j+1]?=255/3*j;
stripeImage[3*j+2]?=160;
}
}
/*?參數(shù)設置?*/
GLfloat?sgenparams[]?=?{1.0?1.0?1.0?0.0};
void??RenderScene(void?)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glPolygonMode(GL_BACKGL_FILL);
glColor3f(1.00.00.0);
// glutSolidSphere?(20?20?16);
glLoadIdentity();
glPushMatrix();
glRotatef(xrot?0.0f?0.1f?0.0f);
xrot+=0.1f;
glutSolidTeapot(50);
glPopMatrix();
glutPostRedisplay();
glutSwapBuffers();
}
void?SetupRC(void)
{
GLfloat?mat_specular[]?=?{?1.0?1.0?1.0?1.0?};
???GLfloat?mat_shininess[]?=?{?50.0?};
???//?Light?0
???GLfloat?light_position[]?=?{?-50.0?100.0?1000.0?0.0};
???GLfloat?light_ambient[]={0.0?0.0?0.0?1.0};
???GLfloat?light_diffuse[]={?1.0?1.0?1.0?1.0?};
???GLfloat?light_specular[]={?1.0?1.0?1.0?1.0?};
???
???//?Light?1
???GLfloat?light_position1[]?=?{?0.0?100.0?0.0?1.0?};
??//?glEnable(GL_COLOR_MATERIAL);
??//?glColorMaterial(GL_FRONTGL_AMBIENT_AND_DIFFUSE);
???glClearColor?(0.0?0.0?0.0?0.0);
???glShadeModel?(GL_SMOOTH);
????makeStripeImage();
//函數(shù)設定從內(nèi)存中讀取紋理圖并放到屏幕上的方式
//指定內(nèi)存中每個象素行起始的排列要求為字節(jié)排列(1)
glPixelStorei(GL_UNPACK_ALIGNMENT?1);
//定義紋理環(huán)境參數(shù):調(diào)整當前亮度和顏色信息,使之適應紋理圖像
glTexEnvf(GL_TEXTURE_ENV?GL_TEXTURE_ENV_MODE?GL_MODULATE);
//紋理繞轉(zhuǎn)使用重復方式
glTexParameterf(GL_TEXTURE_1D?GL_TEXTURE_WRAP_S?GL_REPEAT);
//定義紋理放大和縮小函數(shù)均為GL_LINEAR
glTexParameterf(GL_TEXTURE_1D?GL_TEXTURE_MAG_FILTER?GL_LINEAR);
glTexParameterf(GL_TEXTURE_1D?GL_TEXTURE_MIN_FILTER?GL_LINEAR);
//定義紋理
glTexImage1D(GL_TEXTURE_1D?0?3?stripeImageWidth?0?GL_RGB?GL_UNSIGNED_BYTE?stripeImage);
//控制紋理坐標的生成
//指定單值紋理生成參數(shù)
glTexGeni(GL_S?GL_TEXTURE_GEN_MODE?GL_object_LINEAR);
//指定紋理坐標生成函數(shù)系數(shù)由sgenparams指定
glTexGenfv(GL_S?GL_object_PLANE?sgenparams);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_1D);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glMaterialf?(GL_FRONT?GL_SHININESS?64.0);
???glMaterialfv(GL_FRONT?GL_SPECULAR?mat_specular);
???glMaterialfv(GL_FRONT?GL_SHININESS?mat_shininess);
???glEnable(GL_LIGHTING);
???
???glLightfv(GL_LIGHT0?GL_POSITION?light_position);
???glLightfv(GL_LIGHT0?GL_AMBIENT?light_ambient);
???glLightfv(GL_LIGHT0?GL_DIFFUSE?light_diffuse);
???glLightfv(GL_LIGHT0?GL_SPECULAR?light_specular);
???glEnable(GL_LIGHT0);
???
???glLightfv(GL_LI
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????132096??2012-05-26?02:10??茶壺\Debug\vc60.idb
?????文件??????77824??2012-05-26?02:10??茶壺\Debug\vc60.pdb
?????文件?????188476??2012-05-26?02:10??茶壺\Debug\茶壺.exe
?????文件?????285112??2012-05-26?02:10??茶壺\Debug\茶壺.ilk
?????文件??????10705??2012-05-26?02:10??茶壺\Debug\茶壺.obj
?????文件?????316944??2012-05-25?22:38??茶壺\Debug\茶壺.pch
?????文件?????607232??2012-05-26?02:10??茶壺\Debug\茶壺.pdb
?????文件???????4156??2012-05-26?02:11??茶壺\茶壺.cpp
?????文件???????4088??2012-05-26?01:02??茶壺\茶壺.dsp
?????文件????????516??2012-05-25?22:19??茶壺\茶壺.dsw
?????文件??????41984??2012-05-26?02:11??茶壺\茶壺.ncb
?????文件??????48640??2012-05-26?02:11??茶壺\茶壺.opt
?????文件????????916??2012-05-26?02:10??茶壺\茶壺.plg
?????目錄??????????0??2012-05-26?02:10??茶壺\Debug
?????目錄??????????0??2012-05-26?02:11??茶壺
-----------?---------??----------?-----??----
??????????????1718689????????????????????15
評論
共有 條評論