資源簡介
帶紋理的茶壺,opengl實現,opengl入門級別代碼

代碼片段和文件信息
#include?
#include?
#include?
#include?
void?myinit(void);
void?CALLBACK?display(void);
void?CALLBACK?reshape(GLsizei?wGLsizei?h);
//??定義一個一維紋理的數據,從生成來看,保持紅色、蘭色分量255(MAX),
//??所以是漸變的紫色紋理,飽和度不斷變化。
#define?TEXTUREWIDTH?64
GLubyte?Texture[3*TEXTUREWIDTH];
void?makeTexture(void)
{
????int?i;
????for(i=0;i ????{
????????Texture[3*i]?=255;
????????Texture[3*i+1]?=255-2*i;
????????Texture[3*i+2]?=255;
????}
}
GLfloat?sgenparams[]={1.01.01.00.0};
void?myinit(void)
{
????auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
????auxInitPosition(00500500);
????auxInitWindow(“sample1“);
????glClearColor(0.00.00.00.0);
????glClear(GL_COLOR_BUFFER_BIT);
????//??創建紋理
????makeTexture();
????glPixelStorei(GL_UNPACK_ALIGNMENT1);
????//??控制紋理
????glTexEnvf(GL_TEXTURE_ENVGL_TEXTURE_ENV_MODEGL_MODULATE);
????glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_WRAP_SGL_REPEAT);
????glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_MAG_FILTERGL_LINEAR);
????glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_MIN_FILTERGL_LINEAR);
????glTexImage1D(GL_TEXTURE_1D03TEXTUREWIDTH0
????????????????GL_RGBGL_UNSIGNED_BYTETexture);
????//??唯一與前面例子不同的地方:啟用紋理坐標自動產生,生成環境紋理
????//??紋理的方向S
????glTexGeni(GL_SGL_TEXTURE_GEN_MODEGL_object_LINEAR);
????glTexGenfv(GL_SGL_object_PLANEsgenparams);
????//??啟用紋理
????glEnable(GL_TEXTURE_1D);
????glEnable(GL_TEXTURE_GEN_S);
????//??啟用消隱
????glEnable(GL_DEPTH_TEST);
????glDepthFunc(GL_LESS);
????glDepthFunc(GL_LESS);
????//??一些繪圖控制,詳細可參閱VC5聯機幫助
????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_FRONTGL_SHININESS64.0);
????//??glShadeModel(GL_FLAT);
}
void?CALLBACK?reshape(GLsizei?wGLsizei?h)
{
????glViewport(00wh);
????glMatrixMode(GL_PROJECTION);
????glLoadIdentity();
????if(w<=h)
????????glOrtho(-4.04.0-4.0*(GLfloat)h/(GLfloat)w
???????????4.0*(GLfloat)h/(GLfloat)w-4.04.0);
????else
????????glOrtho(-4.0*(GLfloat)h/(GLfloat)w
????????????4.0*(GLfloat)h/(GLfloat)w-4.04.0-4.04.0);
????glMatrixMode(GL_MODELVIEW);
????glLoadIdentity();
}
void?CALLBACK?display(void)
{
????glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
????glPushMatrix();
????glRotatef(30.01.00.00.0);
????//??利用輔助庫函數繪制一個茶壺
????auxSolidTeapot(1.5);
????glPopMatrix();
????glFlush();
}
void?main(void)
{
????myinit();
????auxReshapeFunc(reshape);
????auxMainLoop(display);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3515??1999-12-04?01:37??帶紋理的茶壺\Exam02.dsp
?????文件????????537??1999-12-04?01:37??帶紋理的茶壺\Exam02.dsw
?????文件??????41984??2006-01-11?11:28??帶紋理的茶壺\Exam02.ncb
?????文件??????53760??2006-01-11?11:28??帶紋理的茶壺\Exam02.opt
?????文件???????1070??1999-12-04?01:37??帶紋理的茶壺\Exam02.plg
?????文件???????2733??1999-11-26?07:39??帶紋理的茶壺\Texture.c
?????目錄??????????0??2006-01-11?11:28??帶紋理的茶壺
-----------?---------??----------?-----??----
???????????????103817????????????????????8
評論
共有 條評論