资源简介

opengl 一个有光照效果带纹理会旋转的立体茶壶,用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 < stripeImageWidth; j++)
{
stripeImage[3*j] = 200;
stripeImage[3*j+1] =255/3*j;
stripeImage[3*j+2] =160;
}
}
/* 参数设置 */
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();
//函数设定从内存中读取纹理图并放到屏幕上的方式
//指定内存中每个象素行起始的排列要求为字节排列(1)
glPixelStorei(GL_UNPACK_ALIGNMENT 1);
//定义纹理环境参数:调整当前亮度和颜色信息,使之适应纹理图像
glTexEnvf(GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_MODULATE);
//纹理绕转使用重复方式
glTexParameterf(GL_TEXTURE_1D GL_TEXTURE_WRAP_S GL_REPEAT);
//定义纹理放大和缩小函数均为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);

//控制纹理坐标的生成
//指定单值纹理生成参数
glTexGeni(GL_S GL_TEXTURE_GEN_MODE GL_object_LINEAR);
//指定纹理坐标生成函数系数由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


评论

共有 条评论