OpenGL-glut创建窗口
环境:win10
库:OpenGL gult库
创建单个窗口
OpenGL在创建窗口前,先进行窗口的初始化,并可以设置窗口的模式、窗口的位置、窗口的尺寸大小
int main(int argc, char *argv[])
{ glutInit(&argc, argv);//初始化gult窗体库glutInitDisplayMode(GLUT_ALPHA | GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL);//设置窗口的显示模式gultInitWindowSize(1080,1080);//设置初始窗口大小glutInitWindowPosition(0,0);//设置初始窗口位glutCreatWindow("This is my first Display");//创建窗口,并命名为“This is my first Display”glutDisplayFunc(display_callback);//执行画面绘制函数,执行display_callback回调函数,进行画面绘制glutReshapeFunc(reshape_callback);//改变窗口大小,执行reshape_callback回调函数,调整窗口大小,并保持图形比例(如无画面大小变化需求,则可忽略)glutKeyboardFunc(keyboard_callback);//接受键盘控制,执行keyboard_callback回调函数,处理键盘输入并执行相应逻辑(如无键盘输入需求,则可忽略)timer_callback(20);//时间回调函数,循环绘制画面,20ms执行一次glutMainLoop();//glut事件循环函数,无限循环以上所以事件return 0;
}
/画面绘制回调函数/
void display_callback(void)
{glClearColor(0.f, 0.f, 0.f, 0.f);//设置OpenGL画面颜色glClear(GL_COLOR_BUGGER_BIT);//清除缓存颜色,将所有的像素设置为glClearColor()设置的值draw_scene();//画面绘制函数,画面要显示什么画面,将在这个函数里实现即可
}
/时间回调函数/
static void timer_callback(int value)
{draw_scene();glutPostRedisplay();//标记当前窗口需要重复绘制glutTimerFunc(timer_value > 0 ? timer_value : 1, timer_callback, value);//定时器
}
创建多个窗口
创建多个窗口在main函数中重复执行glutCreatWindow、glutDisplayFunc函数,并新增第二个窗口的回调函数,在timer回调函数里同样重复调用即可。
结束语:代码是最低级的实现手段,方法才是最珍贵的,这里只是我所熟悉也比较喜欢的一种实现方法,仅供借鉴。
OpenGL-glut创建窗口相关推荐
- OpenGL之创建窗口
目录 什么是OpenGL? 核心模式与立即渲染模式 立即渲染模式 (Immediate mode) 核心模式(Core-profile) 状态机 对象 创建窗口 配置环境 什么是OpenGL? 一般它 ...
- OpenGL创建窗口
OpenGL创建窗口 OpenGL创建窗口 源代码剖析 主要源代码 OpenGL创建窗口 OpenGL没有自己的API用于创建和操作窗口.支持OpenGL的现代窗口系统包括一个子系统,该子系统提供Op ...
- 如何在Python中创建OpenGL/Glut
OpenGL(开放图形库)是一种跨语言.多平台的应用程序编程接口(API),用于绘制二维和三维计算机图形. API通常用于与图形处理单元(GPU)交互,以实现硬件加速渲染.OpenGL由Silicon ...
- 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )
文章目录 一.导入头文件 二.桌面程序入口函数 三.注册窗口 四.创建窗口 五.显示窗口 六.完整代码示例 七.相关资源 基于 [OpenGL]一.Visual Studio 2019 创建 Wind ...
- Opengl入门-glfw3创建窗口改变背景色
文章目录 一.目标 二.结果 三.具体步骤 下载 一.目标 opengl windows环境 glfw3创建窗口改变背景色 二.结果 三.具体步骤 1 glfw是窗口库需要头文件,依赖路径,调用依赖 ...
- 基于C++和OpenGL (GLUT) 实现太阳系行星系统
基于C++和OpenGL (GLUT) 实现太阳系行星系统 效果图: 分析与设计 OpenGL 包含了很多渲染函数,但是他们的设计目的是独立于任何窗口系统或操作系统的.因此,它自身并没有包含创建打开窗 ...
- OpenGL Glut剖析(2)--平行投影及其显示范围
http://anony3721.blog.163.com/blog/static/51197420114282720194/ OpenGL Glut剖析(2)--平行投影及其显示范围 2011-05 ...
- 实验0.2 OpenGL程序创建与运行
下列介绍与图示均以Microsoft Visual Studio Community 2017版本(下面简称为VS)为例,其它版本类似. 1. 创建控制台应用 (1)点击:文件→新建→项目,如下图所示 ...
- 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
文章目录 一.导入 OpenGL 的两个头文件 二.链接 OpenGL 库 三.将 Windows 桌面窗口改成 OpenGL 窗口 四.获取窗口设备 五.设置像素格式描述符 六.设置像素格式 七.创 ...
最新文章
- 计算机网络各种传输介质说明
- python wordcloud 错误 ModuleNotFoundError: No module named 'query_integral_image'
- C++又一坑:动态链接库中的全局变量
- iphone静音键失灵_你知道iPhone手机中哪些一般人不知道的功能?
- 主机名修改 Oracle监听器,oracle agent不能启动的解决方案
- 第20天学习Java的笔记-static静态
- 分治算法-02凸包问题
- CSS串联和后代选择器
- 地产遇冷之际,行业竞争加剧,房企如何走出营销低谷,先声夺人?
- Matlab重建信号实验总结,实验三信号采样与重建(实验报告).doc
- 基于php和mysql的网上购物系统设计与实现_基于PHP+MySQL的网上购物系统设计与实现...
- 机器人油封_机器人油封 机器人减速机 机器人伺服电机油封 KVNOK油封
- ActiveSync 无法同步解决记录
- 电脑(笔记本/台式)如何关闭UAC
- FDD LTE B1是什么
- python使用 photoshop-python-api 调用ps处理批量动作操作
- mysql insert 写法_mysql中insert into语句的6种写法(上)
- 至少144只独角兽在等着IPO,数据不好,PE 给的估值可能保不住了
- 代发核心期刊骗局_“代发论文”骗局:近2000人被骗 多数不愿报案
- .Net Core快速开发平台源码 敏捷开发框架OA系统 CRM快速开发框架