资源简介
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参考手册
- flash as3 多点触控-缩放-旋转-滑动.zi
- 旋转矩阵求欧拉角的简单算法
- 三维重建(旋转)由已知对应图像点
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 三维地形的仿真显示实现了对地图的
- vc利用MFC底层开发的二维GIS管理软件,
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- 易语言矩阵的旋转源码易语言GDI矩阵
- 在s = 200 GeV的极化质子-质子碰撞中,
- OPENGL实现世界上最小的3D游戏
- 高能分解中的旋转螺旋方法:彩色玻
- 违反洛伦兹背景的量子校正旋转声学
- 在de-Sitter时空中旋转标准玻色子星
- Chern-Simons动态引力中的非扰动旋转黑
- VS2012OpenGL配置所需要的全部libdllh文件
- 旋转活塞式流量计的测量原理
- delphi基于gdi+的图片旋转任意角度
评论
共有 条评论