使用SDL开发IMGUI(一)

Note:原教程来自http://iki.fi/sol/imgui/

00 – 介绍

IMGUI全称:Immediate Mode GUI。IMGUI不同于我们常见的RMGUI(MFC、QT、WPF、GTK都是RMGUI)。在典型的RMGUI的应用程序中,我们创建了一堆小部件(widgets),它们通过布局显示在窗口上,我们可以查询小部件的状态,接受系统发来消息和数据,处理、生成新的状态,最终重绘小部件,用户看到改变。

在RMGUI中,代码至少分成3部分:创建、响应消息、删除。如果考虑到多个小部件之间需要传递消息,在系统运行时我们难以预测消息的传播、小部件状态的改变。虽然RMGUI这么麻烦,但在常规的应用开发中,依然是中流砥柱。但是在游戏开发中,用户与应用的交互十分频繁,游戏逐帧更新,复杂的RMGUI难以做到60FPS。在这种情况下IMGUI就可以展示它的威力。

在IMGUI中代码是这个样子的。

if (button(GEN_ID, 15, 15))
{
	button_was_pressed();
}

这段代码的奇妙之处在于每一帧都被执行一次,button();函数在屏幕的(15,15)处绘制一个按钮图片,当检测到鼠标恰好“激活”时返回true。这里使用激活是因为这段代码在一秒内会执行60次甚至更多,假如仅仅是按下鼠标就能激活按钮的话,将会在一秒内产生很多次按钮按下响应,这不是我们希望看到的。通常是鼠标在按钮内部按下又弹起作为一次激活

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值