(完整版)基于OpenGL的飞机3D实时仿真_程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "total.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define GLUT_DISABLE_ATEXIT_HACK
#define FILE_NAME "feiji.3DS" //指定对应的FILE NAME
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
#define SCREEN_DEPTH 16
#define MAX_TEXTURES 100 // 最大的纹理数目
#define PRIMARY 0x4D4D// 基本块(Primary Chunk),位于文件的开始// 主块(Main Chunks)
#define OBJECTINFO 0x3D3D // 网格对象的版本号
#define VERSION 0x0002 // .3ds文件的版本
#define EDITKEYFRAME 0xB000 // 所有关键帧信息的头部
// 对象的次级定义(包括对象的材质和对象)
#define MATERIAL 0xAFFF // 保存纹理信息
#define OBJECT 0x4000 // 保存对象的面、顶点等信息// 材质的次级定义
#define MATNAME 0xA000 // 保存材质名称
#define MATDIFFUSE 0xA020 // 对象/材质的颜色
#define MATMAP 0xA200 // 新材质的头部
#define MATMAPFILE 0xA300 // 保存纹理的文件名
#define OBJECT_MESH 0x4100 // 新的网格对象
// OBJECT_MESH的次级定义
#define OBJECT_VERTICES 0x4110 // 对象顶点
#define OBJECT_FACES 0x4120 // 对象的面
#define OBJECT_MATERIAL 0x4130 // 对象的材质
#define OBJECT_UV 0x4140 // 对象的UV纹理坐标
int g_ViewMode = GL_TRIANGLES;
bool g_bLighting = true;
float g_Rotatex = 0;
float g_Rotatey = 0;
float g_Rotatez = 0;
float g_x =0;
float g_y =0;
float g_z =0;
//。。。。。。。。。。。。。。。。。。。。定义需要导入的数据
float Rotatex ;
float Rotatey ;
float Rotatez ;
float x ;
float y ;
float z ;
double gl_x; double gl_y; double gl_z; double gl_pitch; double gl_roll; double gl_yaw; double gl_wcpitch;double gl_wcroll;double gl_wcyaw;
using namespace std;
UINT g_Texture[MAX_TEXTURES] = {0};
HWND g_hWnd;
RECT g_rRect;
HDC g_hDC;
HGLRC g_hRC;
HINSTANCE g_hInstance;
HINSTANCE hInstance;
MMRESULT idtimer_Opengl;
HWND CreateMyWindow(LPSTR strWindowName, int width, int height, DWORD dwStyle, HINSTANCE hInstance);// 生成用户窗口
LRESULT CALLBACK WinProc(HWND gl_hwnd, UINT message, WPARAM wParam, LPARAM lParam);//消息响应
void Init(HWND gl_hWnd);// 初始化整个程序
void InitializeOpenGL(int width, int height);// 初始化OpenGL
bool bSetupPixelFormat(HDC hdc);// 设置像素格式
void SizeOpenGLScreen(int width, int height);// 初始化投影变换
int MainLoop();//主循环
void RenderScene(double gl_x, double gl_y, double gl_z, double gl_roll, double gl_pitch, double gl_yaw) ;
void DeInit();// 释放程序占用的内存空间
void myDisplaycube();//绘制外框架
void glprintf();//输出文字