[C++][OpenGL]自己写GUI(0)——介绍
文章可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6928612.html。文章未完,如果不在博客园(cnblogs)发现本文,请访问前面的链接查看最新版。
GUI是什么
GUI是图形用户界面(graphical user interface)的意思,意思是采用图形方式显示的计算机操作用户界面。
这里的写GUI,指的是在屏幕上绘制控件(widget),并对这些控件进行管理。控件,大致就是像按钮、文本框这些组成一个GUI程序的基本部件。(注:这一段如果有问题请提出意见!)
关于本教程
虽然这个教程系列是自己编写GUI,但是其实已经有很多现成的GUI库可用了,例如Qt、wxWidgets(看这里)。C++的标准库是没有提供GUI库的,因此这些GUI库都不是C++标准库,而是第三方的。
竟然都已经有了这么多GUI库,为什么还要自己写呢?这源于我的个人经历——之前我在用OpenGL编写游戏,随着游戏加入的内容越来越多,加入GUI也被提上日程。当时我对GUI库不了解(甚至可能不知道,现在也是),况且似乎这种情况下也不能使用(能使用也不如自己写),于是自己写GUI。于是自己就去学习如何写GUI。我最终实现了按钮(也许还有标签),但游戏也废弃了。
有一个词叫做“造轮子”,虽然已经有很好的成品了,但是自己尝试写写也是不错的,可能有些时候还必须这样做。百度上关于自己写GUI的文章也很少,于是我就打算自己写一个GUI教程系列(使用C++、OpenGL),弥补百度资源的困乏。当然我自己也乐意分享自己的经验。
最后,为方便,这个教程使用Legacy OpenGL。并不是说我跟不上时代,out了,只是为了简单方便——我们的重点是实现GUI,因此不必在写shader、设置VBO、VAO这些事上浪费时间。况且如果OpenGL水平足够,完全可以自己将Legacy OpenGL代码改写成Modern OpenGL代码。
[C++][OpenGL]自己写GUI(0)——介绍的更多相关文章
- 【Xilinx-VDMA模块学习】-01- VDMA IP的GUI配置介绍
使用的是Vivado 2015.4,XC7Z020, AXI Video Direct Memory Acess(6.2). 在我的系统中,GUI配置图片如下:(其实和默认配置没有太大区别) 下面介绍 ...
- 手机GUI自动化测试介绍
手机GUI自动化测试介绍 Posted on 2013/05/15 Xing Binbin(测试工程师) 摘要 众所周知,自动化测试可以一定程度上减轻测试人员负担,提高测试效率,并且通过自动化还可以实 ...
- Python教程(0)——介绍
What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...
- css写出0.5px边框(一)
在移动端会出现线条太粗的现象,简单来说,是因为手机端的像素单位和ui的图比例是2:1,所以ui图的1px边框对我们来说就是0.5px,但是浏览器渲染的最小单位就是1px,下面给几种方法用css写出0. ...
- 开放平台鉴权以及OAuth2.0介绍
OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...
- YZOI回忆录&&YZOI3.0介绍&&某些资源的分享
“那段时光就像块透明的琉璃,美得那么虚幻.飘渺.可是它毕竟在我生命里闪现,哪怕如萤光一样微弱,却照亮了我整个心房.”1.前序伴随着yzoi2.0版本离我而去的是我半年的OI生涯,在这半年内我步入了一个 ...
- OAuth2.0介绍
OAuth2.0介绍 OAuth2.0简介 四种许可类型 2.1. 授权码许可(Authorization Code) 2.2. 隐式许可(Implicit) 2.3. 资源拥有者密码凭据许可(Res ...
- OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out
OpenGL ES和OpenGL的图标 关于“OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out”这个问题,做一阐述: 1.关键字的小修 ...
- SpringBootSecurity学习(14)前后端分离版之 OAuth2.0介绍
登录总结 前面基本介绍了security的常规用法,同时介绍了JWT和它的一个简单实现,基本上开发中遇到的登录问题都能解决了,即使在分布式开发,或者微服务开发中实现登录也基本没有问题了.securit ...
随机推荐
- java多线程基本概述(一)——线程的基本认知
1.1.概念: 进程:进程是操作系统结构的基础,是一次程序的执行:是一个程序及其数据再处理器上顺序执行时所发生的活动:是程序再一个数据集合上运行的过程,它是系统进行系统资源分配和调度的最小单元. 线程 ...
- SysTick定时器
SysTick是一个24位的倒计数定时器,当计到0时,将从RELOAD寄存器中自动重装载定时初值.只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息.下边小结了SysTick的相关寄 ...
- Java设置Excel有效性
XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet("Excel"); String[] ...
- 为linux安装xen-tools提示/dev/xvdd does not exist
看样子百度还是不如google啊.百度上找到的信息完全无用.google上却给我找到了... 1:当/dev/xvdd does not exist错误出现时,可以尝试下 mount /dev/cdr ...
- Angular2.js——多个组件
目前我们的英雄列表和英雄详情位于同一个文件的同一个组件中,我们将来可能会受到新的需求,修改这个组件又不能影响另外一个.然而每一次更改都会给这两个组件带来风险和双倍的测试负担,没有任何好处.如果我们需要 ...
- 永久设置mysql中文乱码问题
1.进入mysql的命令窗口 输入 show variables like '%char%'; 查看当前编码是否为UTF-8 2.在上述命令的结果中我们可以看到Wamp的安装目录,找到这一目录,在里面 ...
- (原创)看我用各种姿势在手机和PC查看到连接到的wifi密码
今天一个女神来我家做客,她问我WiFi密码,然而我却奇迹般的忘记了(特么的当时心里一万个草泥马踏过去),让我在她面前尴尬求子的,所以为了防止你们也出现这种情况,我特地把各种方法整理了一下,那么感兴趣的 ...
- 【lucene系列学习四】log4j日志文件实现多线程的测试
参考资料:http://nudtgk2000.iteye.com/blog/1716379 首先,在http://www.apache.org/dyn/closer.cgi/logging/log4j ...
- 蓝桥杯-扑克牌移动-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- oracle高效分页查询总结
本文参考链接:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 探索查询语句: --分页参数:size = 20 page = 2 --没有or ...