资源简介
可以用OpenGL实现红旗飘动效果,可以通过改变参数任意折叠效果

代码片段和文件信息
#include // Windows的头文件
#include
#include // 引入数学函数库中的Sin
#include “glew.h“ // 包含最新的gl.hglu.h库
#include “glut.h“ // 包含OpenGL实用库
#include
#define xdata 100
#define ydata 100
float points[xdata][ydata][3]; // Points网格顶点数组
//int wiggle_count = 0; // 指定旗形波浪的运动速度
GLfloat hold; // 临时变量
HDC hDC=NULL; // 窗口着色描述表句柄
HGLRC hRC=NULL; // OpenGL渲染描述表句柄
HWND hWnd=NULL; // 保存我们的窗口句柄
HINSTANCE hInstance; // 保存程序的实例
BOOL light; // 光源的开/关
BOOL lp; // L键按下了么?
BOOL fp; // F键按下了么?
//为贴图新加的变量
GLfloat z=-12.0f; // 深入屏幕的距离
GLfloat LightAmbient[]= { 0.5f 0.5f 0.5f 1.0f }; // 环境光参数保证没有漫反射光的地方也能看清
GLfloat LightDiffuse[]= { 1.0f 1.0f 1.0f 1.0f }; // 漫射光参数
GLfloat LightPosition[]= { 0.0f 0.0f 2.0f 1.0f }; // 光源位置,也是通过坐标确定的
GLuint filter; // 滤波类型
GLuint texture[1]; // 3种纹理的储存空间
bool keys[256]; // 保存键盘按键的数组
bool active=TRUE; // 窗口的活动标志,缺省为TRUE
bool fullscreen=TRUE; // 全屏标志缺省,缺省设定成全屏模式
LRESULT CALLBACK WndProc(HWND UINT WPARAM LPARAM); // WndProc的定义
AUX_RGBImageRec *LoadBMP(char *Filename)// 载入位图图象
{
FILE *File=NULL;
if(!Filename)
{
return NULL;
}
File=fopen(Filename“r“);
if(File)
{
fclose(File);
return auxDIBImageLoad(Filename);
}
return NULL;
}
int LoadGLTextures()// 载入位图(调用上面的代码)并转换成纹理
{
int Status=FALSE;//状态指示器
AUX_RGBImageRec *TextureImage[1];// 创建纹理的存储空间
memset(TextureImage0sizeof(void*)*1);// 将指针设为 NULL
// 载入位图,检查有错,或位图不存在的话退出
if(TextureImage[0]=LoadBMP(“Data/moon.bmp“))
{
Status=TRUE;
glGenTextures(1&texture[0]);//这里我们要创建3个纹理并将其存入texture[]中
//生成线性滤波纹理
glBindTexture(GL_TEXTURE_2Dtexture[0]);
glTexImage2D(GL_TEXTURE_2D 0 3 TextureImage[0]->sizeX TextureImage[0]->sizeY 0 GL_RGB GL_UNSIGNED_BYTE TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR); // 线形滤波
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR); // 线形滤波
}
if(TextureImage[0])// 纹理是否存在
{
if (TextureImage[0]->data) // 纹理图像是否存在
{
free(TextureImage[0]->data); // 释放纹理图像占用的内存
}
free(TextureImage[0]); // 释放图像结构
}
return Status;
}
GLvoid ReSizeGLScene(GLsizei width GLsizei height) // 重置OpenGL窗口大小
{
if (height==0) // 防止被零除
{
height=1; // 将Height设为1
}
glViewport(00widthheight); // 重置当前的视口
glMatrixMode(GL_PROJECTION); // 选择投影矩阵
glLoadIdentity(); // 重置投影矩阵
// 设置视口的大小
gluPerspective(45.0f(GLfloat)width/(GLfloat)height0.1f100.0f);
glMatrixMode(GL_MODELVIEW); // 选择模型观察矩阵
glLoadIdentity(); // 重置模型观察矩阵
}
int InitGL(GLvoid) // 此处开始对OpenGL进行所有设置
{
glLightfv(GL_LIGHT1 GL_AMBIENT LightAmbient); // 设置环境光
glLightfv(GL_LIGHT1 GL_DIFFUSE LightDiffuse); // 设置漫射光
glLightfv(GL_LIGHT1 GL_POSITIONLightPosition); // 设置
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 196662 2010-03-19 10:46 飘动效果\piao\Data\moon.bmp
文件 245853 2010-04-06 16:52 飘动效果\piao\Debug\piao.exe
文件 74373 2010-04-06 16:52 飘动效果\piao\Debug\piao.obj
文件 672768 2010-04-06 16:52 飘动效果\piao\Debug\piao.pdb
文件 0 2010-03-25 11:44 飘动效果\piao\Debug\piao.sbr
文件 94208 2010-04-06 16:52 飘动效果\piao\Debug\vc60.pdb
文件 18349 2010-04-06 16:52 飘动效果\piao\piao.cpp
文件 3955 2010-03-19 17:07 飘动效果\piao\piao.dsp
文件 533 2010-03-19 08:59 飘动效果\piao\piao.dsw
文件 41984 2010-04-06 16:57 飘动效果\piao\piao.ncb
文件 53760 2010-04-06 16:57 飘动效果\piao\piao.opt
文件 773 2010-04-06 16:52 飘动效果\piao\piao.plg
目录 0 2010-03-19 09:06 飘动效果\piao\Data
目录 0 2010-04-08 09:19 飘动效果\piao\Debug
目录 0 2010-04-06 16:57 飘动效果\piao
目录 0 2010-03-19 08:59 飘动效果
----------- --------- ---------- ----- ----
1403218 16
- 上一篇:联通考试题库.zip
- 下一篇:冒险伴侣源码 外挂源码
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- opengl室内场景的绘制,包括碰撞检测
- OpenGL场景漫游
评论
共有 条评论