资源简介
可以用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室内场景的绘制,包括碰撞检测
- OpenGL场景漫游
- 用opengl实现的太阳系模型
- OpenGL 3D贪吃蛇程序,很小
- OpenGL爆炸碎片化效果 源码
- OpenGL三茶壶三光源光源绕着茶壶旋转
- 10个OpenGL的源码
- vc写的一个游戏里面三维场景漫游
- OpenGL实现的简单游戏引擎
- OpenGL游戏程序设计源码
- glew最新版本glew1.11.0
- OpenGL 火箭
- 天空盒和地面
- 三维场景漫游.zip
- openGL实现的正方体六面贴图
- opengl简易翻牌游戏
- Qt Openglwidget 显示图片纹理贴图
- OpenGL实现三维物体旋转,缩放
- MD5GPU.rar
- OpenGL立方体在世界坐标系中缩放_旋转
- OpenGL ES 2.0 编程指南 中文版.pdf
- openGL实现三维点云显示
- opengl写的趣味3D骰子
- 计算机图形学实验 opengl实现太阳系运
- opengl实现地球围绕太阳转动
- opnegl 太阳 月亮 地球 天体旋转
- glut库glew库glfw库glaux库
- OpenGL小车三维模型源码.zip
- 虚拟环境漫游系统
- 基于OpenGL实现俄罗斯方块
评论
共有 条评论