资源简介
利用OpenGL 实现一个小台灯实例源代码
代码片段和文件信息
#define WM_TOGGLEFULLSCREEN (WM_USER+1) // 定义全屏/窗口切换消息
#define TIMER1 101 // 定义时钟代号设置为101号
#define title “第一题“ // 定义窗口标题
#define CLASSNAME “5DG_OPENGL“ // 定义窗口类名
#define WIDTH 800 // 定义窗口宽度
#define HEIGHT 600 // 定义窗口高度
#define BPP 16 // 定义每像素的位数
// 在此处引用程序要求的头文件:
#include // Windows的头文件
#include // OpenGL32库的头文件
#include // Glu32库的头文件
#include
#include
// 在此处加入程序要求的库到链接器中:
#pragma comment( lib “opengl32.lib“ ) // 链接时查找OpenGL32.lib
#pragma comment( lib “glu32.lib“ ) // 链接时查找glu32.lib
#pragma comment( lib “glaux.lib“)
// 在此处定义与窗口相关的结构体:
typedef struct { // 定义处理键盘的结构体
BOOL keyDown [256]; // 存储键盘按键状态的数组
} Keys;
typedef struct { // 定义存储应用程序实例的结构体
HINSTANCE hInstance; // 应用程序实例
const char* className; // 应用程序类名
} Application;
typedef struct { // 定义初始化窗口所需信息
Application* application; // 所属的应用程序
char* title; // 窗口标题
int width; // 窗口宽度
int height; // 窗口高度
int bitsPerPixel; // 每像素的位数
BOOL isFullScreen; // 是否全屏
} GL_WindowInit;
typedef struct { // 定义窗口结构体
Keys* keys; // 键盘
HWND hWnd; // 窗口句柄
HDC hDC; // 设备描述表
HGLRC hRC; // 绘制描述表
GL_WindowInit init; // 提供Window初始化信息的结构体
} GL_Window;
// 此代码模块中包含的函数的前向声明:
BOOL Initialize(GL_Window* window Keys* keys); // 设置你绘制前的初始化值
void DrawSceneGL(void); // 在这里完成场景的绘制
void Update(void); // 在此处更新对消息的动作
void Deinitialize(void); // 在此处做退出前扫尾工作
// 在此处定义全局变量:
GL_Window* OGL_window; // 存储窗口信息
Keys* OGL_keys; // 存储按键信息
// 在此处定义用户变量:
GLfloat angle_X = 90.0f;
GLfloat angle_Y = 0.0f;
GLfloat angle_Z = 30.0f;
GLfloat lampShape_angle_X = 0.0f;
GLfloat lampBody_angle_X = 0.0f;
GLfloat lamp_angle_X = 0.0f;
GLUquadric *quadric;
GLfloat light0_ambient[] = { 1.0f 1.0f 1.0f 1.0f };
GLfloat light0_diffuse[] = { 1.0f 1.0f 1.0f 1.0f };
GLfloat light0_specular[] = { 1.0f 1.0f 1.0f 1.0f };
GLfloat light0_position[] = { 1.0f 1.0f 1.0f 1.0f };
GLfloat light1_attenuation = 0.0f;
GLfloat light1_ambient[] = { 0.9f 0.9f 0.9f 1.0f };
GLfloat light1_diffuse[] = { 1.0f 1.0f 1.0f 1.0f };
GLfloat light1_specular[] = { 1.0f 1.0f 1.0f 1.0f };
void ResizeWindowGL(int width int height) // 重新设置窗口大小
{
glViewport(0 0 (GLsizei)(width) (GLsizei)(height)); // 重置当前视口大小
glMatrixMode(GL_PROJECTION); // 切换到投影矩阵模式
glLoadIdentity(); // 重置投影矩阵
gluPerspective(45 (float)width/(float)height 0.1 100); // 设置透视投影
glMatrixMode(GL_MODELVIEW); // 切换到模型视图矩阵
glLoadIdentity(); // 重置模型视图矩阵
}
BOOL ChangeScreenResolution(int wid
- 上一篇:C语言写的商品信息管理系统
- 下一篇:TIFF的C++库
相关资源
- 安卓c语言开发SDL2+opengles
- 人脸识别(opencv_facedetect_v4l2)
- LVGL 7.0 开发手册
- 颜色识别形状识别STM103嵌入式代码
- openwrt深入学习笔记
- 基于opencv的模板匹配代码
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- opencv图片扫描以及校正
- opencv手部轮廓识别以及轨迹识别
- opencv2 3D标定.cpp
-
Google C++ st
yle Guide - 基于opencv漫水填充算法综合
- LVGL 英文参考手册
- opengl绘制汽车.cpp
- 自洽SU3手性夸克-孤子模型中单重子的
- opencv激光中心线的提取
- 手性摄动理论中双迷人重子的辐射衰
- 自协变重子手性扰动理论中自旋1/2双
- OpenCV Computer Vision Application Programming
- 基于图割的图像分割OpenCV+MFC实现
- 识别魔方颜色
- opencv版俄罗斯方块源码
- Kinect手势控制鼠标
- VS2013 / MFC + OpenCV 2.4.9实现视频的播放
- opengl实现水流效果sph
- opengl源代码,全是精华!
- 粒子滤波器+目标跟踪的C++实现,VS2
- OpenGL迷宫山东大学图形学实验三
- C语言openssl库SM2-SM3国密常用函数
评论
共有 条评论