资源简介
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
- 上一篇:Qt程序获取扫码枪数据
- 下一篇:程序员单词1695导入知米背单词APP
相关资源
- opengl系统开发案例代码 Chapter15
- glm.cpp、glm.h用于opengl读取obj文件
- OPENGL可一走动的人
- opengl实现多边形绘制删除和移动 有保
- OpenGL实现3DS文件中的模型自由旋转
- opengl画球,递归细分
- OpenGL教室
- 旋转不变算法ESPRIT
- 四元数运算与旋转矩阵库
- 空间坐标系之间的旋转表达方式的相
- 3DS文件导入OpenGL并动态显示源码
- OpenGL使用Window API绘制矢量字体非常简
- 计算机图形学四面体几何变换.doc
- QT+opencv图像几何变换,包括图像平移
- 交互式计算机图形学-基于OpenGL的自顶
- 《实战OPENGL三维可视化系统开发与源
- Qt加OpenGL实现鼠标控制视角
- OpenGLSETest.zip
- QTopengl模块使用demo
- QT使用openglES模块做的立方体程序
- OpenGL坦克大战2D游戏文档包含所有模块
- opengl下的贪吃蛇
- 华南理工大学实验——OpenGL Shader导入
- OpenGL透视投影小程序源码
- OpenGL纹理贴图.jpg格式图片小程序源码
- QT5.7+OPENGL画正方体
- OpenGL实现多边形扫描转换的扫描线算
- 旋转编码器的抗抖动计数电路
- Unity鼠标操作平移、旋转、缩放
- OpenGL鼠标点选平移物体
评论
共有 条评论