资源简介
利用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
相关资源
- opengl math3d
- opengl实现的光线跟踪
- 利用OpenGL实现屏幕坐标与世界坐标的
- OpenGL画花瓶,可以填充,选择颜色 代
- 基于OpenGL的B样条曲线曲面的绘制
- 基于OpenGL虚拟校园漫游系统的设计与
- 用OPENGL读取MS3D文件
- OpenGL安装文件及安装方法
- openGL Matrix类的实现,包括和四元数、
- OPENGL五角星
- opengl雪花代码
- OpenGL的B样条、贝塞尔曲线和贝塞尔曲
- opengl\\雷达三维成像和雷达视觉
- 用opengl编写的一个小游戏
- openGL 模拟太阳系行星自转公转
- 读取DXF文件并在OpenGL中显示.
- 用VC opengl 绘制的一个房屋轮廓
- opengl类库大全glaux.lib;glu.lib;glu32.lib;
- OpenGL实现的3D魔方
- OPenGL中绘制茶杯模型
- 刚学的OpenGL画五角星
- Qt自定义继承QOpenGLWidget的类进行绘图
- 读取obj文件含顶点法线,2013编译通过
- OpenGL画树的代码
- OpenGL开发的机械臂运动仿真程序
- Phong光照及在GLSL中使用函数
- 现代OpenGL+Qt:绘制可旋转、带光照效
- 现代OpenGL+Qt学习笔记之四:使用Unif
- 现代OpenGL+Qt学习笔记之三:显示一个
- 现代OpenGL+Qt学习笔记之二:程序框架
评论
共有 条评论