文章可转载,转载请注明出处: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)——介绍的更多相关文章

  1. 【Xilinx-VDMA模块学习】-01- VDMA IP的GUI配置介绍

    使用的是Vivado 2015.4,XC7Z020, AXI Video Direct Memory Acess(6.2). 在我的系统中,GUI配置图片如下:(其实和默认配置没有太大区别) 下面介绍 ...

  2. 手机GUI自动化测试介绍

    手机GUI自动化测试介绍 Posted on 2013/05/15 Xing Binbin(测试工程师) 摘要 众所周知,自动化测试可以一定程度上减轻测试人员负担,提高测试效率,并且通过自动化还可以实 ...

  3. Python教程(0)——介绍

    What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...

  4. css写出0.5px边框(一)

    在移动端会出现线条太粗的现象,简单来说,是因为手机端的像素单位和ui的图比例是2:1,所以ui图的1px边框对我们来说就是0.5px,但是浏览器渲染的最小单位就是1px,下面给几种方法用css写出0. ...

  5. 开放平台鉴权以及OAuth2.0介绍

    OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...

  6. YZOI回忆录&&YZOI3.0介绍&&某些资源的分享

    “那段时光就像块透明的琉璃,美得那么虚幻.飘渺.可是它毕竟在我生命里闪现,哪怕如萤光一样微弱,却照亮了我整个心房.”1.前序伴随着yzoi2.0版本离我而去的是我半年的OI生涯,在这半年内我步入了一个 ...

  7. OAuth2.0介绍

    OAuth2.0介绍 OAuth2.0简介 四种许可类型 2.1. 授权码许可(Authorization Code) 2.2. 隐式许可(Implicit) 2.3. 资源拥有者密码凭据许可(Res ...

  8. OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out

           OpenGL ES和OpenGL的图标 关于“OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out”这个问题,做一阐述: 1.关键字的小修 ...

  9. SpringBootSecurity学习(14)前后端分离版之 OAuth2.0介绍

    登录总结 前面基本介绍了security的常规用法,同时介绍了JWT和它的一个简单实现,基本上开发中遇到的登录问题都能解决了,即使在分布式开发,或者微服务开发中实现登录也基本没有问题了.securit ...

随机推荐

  1. 告别findViewById(),ButterKnife,使用Google Data Binding Library(1)

    Data Binding Library 用数据绑定编写声名性布局,可以最大限度的减少findViewById(),setOnClickListener()之类的代码.并且比起findViewById ...

  2. JS中直接调用后台静态方法

    这两天在维护一个很久之前的老项目,需要在jsp中增加显示一些新的模块,需要连表查询数据库返回数据 最开始想到的是用ajax,但是由于项目十几年前的老项目(jsp页面都是最原始的拼接组成,没有单独的js ...

  3. (一)java多线程之Thread

    本人邮箱: kco1989@qq.com 欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco github: https://github.com/kco198 ...

  4. CSS表单属性

    一般来说,表单在一个页面中是必不可少的,下面是我对表单的知识总结: 依次要说的是表单元素.表单属性.以及表单提交(js知识) 1,表单元素: <form action="提交的位置 / ...

  5. PL/SQL 自动补全[转]

    1.新建 shortcuts.txt 内容如下: s = SELECT t.* FROM t w = WHERE b = BETWEEN AND l = LIKE '%%' o = ORDER BY ...

  6. bzoj4766 文艺计算姬

    Description "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬.文艺计算姬比普通计算机有更多的艺术细胞.普通计算机能计算一个带标号完全图的生成树个数, ...

  7. 把上传Github的代码添加Cocoapods支持

    开始 这里我将从最初的开始进行介绍,包括Github上创建项目已经上传项目,到最后的支持Cocoapods. 步骤如下: 代码上传Github 创建podspec文件,并验证是否通过 在Github上 ...

  8. test back

    python Mysql 下载地址 http://sourceforge.net/projects/mysql-python/

  9. shell 分割字符串存至数组

    shell 分割字符串存至数组 shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk但是实际上用shell自带的分割数组功能会更方便.假如a=”one,t ...

  10. cmd 菜单学习

    @ECHO OFF&PUSHD %~DP0 &TITLE 标题是随意的 mode con cols=36 lines=20 color 2C :menu cls echo. echo ...