• 大小: 336KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: 其他
  • 标签: OpenGL  飘动  

资源简介

可以用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


评论

共有 条评论