irrlicht有自己的ui系统,不用再去找其他的ui系统来挂载了.下面介绍一下irrlicht

UI系统的基本使用方法.我用一个hello world的工程来讲解.因为代码量并不多,就将所有的代码都贴出来了.
#include <windows.h>
#include <irrlicht.h>
//头函数,因为将调用GetWindowsDirectory()函数获得系统目录所以包含了<windows.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
//名字空间,不用每次都用irr::等来声明
IGUIEditBox *edtName = 0;
IGUIButton *pbtn = 0;
CGUITTFont *pFont;
IGUIListBox* listbox = 0;
IGUISkin* skin;
IrrlichtDevice *Device;
//用到的几个全局变量,CGUITTFont是从IGUIFont派生出的类,非irrlicht自带.用于中文支持.不用中文的话,定义为IGUIFont即可
class MyEventReceiver : public IEventReceiver
{
public:
 virtual bool OnEvent(SEvent event)
 {
  if (event.EventType == EET_GUI_EVENT)
  {
   s32 id = event.GUIEvent.Caller->getID();
   switch(event.GUIEvent.EventType)
   {   
   case EGET_BUTTON_CLICKED://这里只处理了按钮点击的消息
    if (id == 101)
    {     
     listbox->addItem(edtName->getText());
//点发送按钮时,把editbox里的内容加到listbox中;
     return true;
    }   
    break;   
   }
  }
  return false;
 }
};
//自定义的消息处理类,重载了OnEvent()函数,demo将用这个类来出理消息.注意后面会调用一个setEventReceiver()函数来设定消息处理类.
int main()
{
Device =createDevice( video::EDT_DIRECT3D9, dimension2d<s32>(640,480), 16,false, false, false, 0);
//main函数开始,创设备.
Device->setWindowCaption(L"鬼火引擎,第一个例子");
IVideoDriver* driver = Device->getVideoDriver();
ISceneManager* smgr = Device->getSceneManager();
IGUIEnvironment* guienv = Device->getGUIEnvironment();
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
//添加了一个摄像机,位置和观察点分别为(0,30,-40),(0,5,0).
MyEventReceiver receiver;
 Device->setEventReceiver(&receiver);
//指定消息处理类
skin = guienv->getSkin();
c8 tmp[512];
GetWindowsDirectory(tmp,511);
strcat(tmp,"\\fonts\\simhei.ttf");
pFont = (CGUITTFont *)guienv->getFont(tmp,15);//获得ttf字体
skin->setFont(pFont);//设置字体
//得到系统目录fonts下的simhei.ttf字体,并设置为当前使用的字体.
edtName = guienv->addEditBox(L"岁月无声",rect<s32>(350,400,530,430));
edtName->setOverrideColor(SColor(0,0,0,255));
//添加一个EditBox,并将字体颜色设成蓝色.也可以这样调用类指定自己的字体:
edtName->setOverrideFont(pFont),pFont要另行加载.
pbtn = guienv->addButton(rect<s32>(540,400,590,430), 0, 101, L"发送");
listbox = guienv->addListBox(rect<s32>(350, 300, 590, 380));
//添加了一个按钮和一个列表框
IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
 IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
if (node)
 {
  node->setMaterialFlag(EMF_LIGHTING, false);
  node->setMD2Animation ( scene::EMAT_STAND );
  node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
 }
//场景太单调了,还是留下原来的这个md2 "美女"模型
while(Device->run())
 {
  /*
  Anything can be drawn between a beginScene() and an endScene()
  call. The beginScene clears the screen with a color and also the
  depth buffer if wanted. Then we let the Scene Manager and the
  GUI Environment draw their content. With the endScene() call
  everything is presented on the screen.
  */
  driver->beginScene(true, true, SColor(255,100,102,140));
smgr->drawAll();
  guienv->drawAll();
  driver->endScene();
 }
//游戏循环
Device->drop();
return 0;
}
//main函数结束.
呵呵,挺简单的吧,irrlicht好像还有ui编辑器哦,这样就不用我们自己算坐标了,用起来就更方便了.好了,看看我们的成果吧.

转载于:https://www.cnblogs.com/flysnow/archive/2006/07/23/457827.html

[原创]IrrLicht的GUI使用相关推荐

  1. Irrlicht学习笔记(5)--UserInterface

    1.说明: 这个例子介绍irrlicht引擎的用户界面接口部分, 展示了Irrlicht引擎GUI设计的部分内容. 本例内容包括: 1)创建和使用窗口 2)按钮 3)滑动条 4)静态文本 5)列表盒子 ...

  2. ygopro源码分析3:解剖

    本文简单的整理一下ygopro是如何运行的 1.core的运作 core维护了一场duel,是ygopro的核心.源码大概分为4部分: 第一部分是card duel effect field grou ...

  3. 【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 --序言(一)

    声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org)所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 大家好,我是XiaomaG ...

  4. [原创] GUI原理2 - 矢量线条

    [转载]chinaui.com [原创] GUI原理2 - 矢量线条 □ 作者:evolrof   2004-11-21 13:11:01  先来说说画线,画线要从直线说起.直线嘛,我想大家都会觉得简 ...

  5. 【黑金动力社区】【原创博文集锦】《液晶驱动与GUI 基础教程》导读

    [连载][黑金动力社区原创力作]<液晶驱动与GUI 基础教程> --序言(一) [连载][黑金动力社区原创力作]<液晶驱动与GUI 基础教程>--第一章 从这里开始(二) [连 ...

  6. linux 轻量化图形界面,YOXIOS 入门教程--基于Linux的 轻量化GUI图形系统和硬件平台(41页)-原创力文档...

    YOXIOS --基于 Linux 的轻量化 GUI图形系统和硬件平台 YOXIOS 入门教程 基于 Linux 的 轻量化 GUI图形系统和硬件平台 (V1.0 2020-05) 提示:阅读此文档需 ...

  7. 【原创】在RT1050 LittleVgl GUI中嵌入中文输入法框架

    时隔一年多终于又冒泡了,哎,随着工作越来越忙,自己踏实坐下来写点东西真是越来越费劲,这篇文章也是准备了好久好久才打算发表出来(不瞒大家,东西做完好久了,文章憋了一年了,当真"高产" ...

  8. Irrlicht Engine 相关信息——一些常见问题和解答

    1:Irrlicht引擎是什么? Irr引擎是一个高性能,跨平台,开源的3D引擎.它能够帮助你进行实时3D程序的开发.它的主要目标是:方便使用,运行速度快,可扩展,线程安全. 这个引擎是一个非常灵活的 ...

  9. python3.6运行界面_python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 --------原创 blogs: http://www.cnblogs.com/chenyueb ...

最新文章

  1. FFmpeg中libswscale库简介及测试代码
  2. vue 时间安排表
  3. struts2 获取request、session的方法
  4. mysql 备份文件太大_mysql数据库太大了怎么备份
  5. P3911 最小公倍数之和
  6. bzoj4974 字符串大师
  7. android listview item 选中背景,Android ListView的item背景色设置和item点击无响应的解决方法...
  8. java案例代码8--最终要随机输出一组出来做为排名
  9. 计算机二级c语言考试真题及答案详解,2021全国计算机二级C语言程序设计历年真题及答案节选...
  10. GNURadio(一)
  11. MSR5560 路由器映射
  12. 【PyQt5,2021最新Java常用开源库总结
  13. BuuCTF_crypto(2021.10.8新-->旧)
  14. python 进行深入学习
  15. 虚拟机CentOS启动报错-entering emergency mode解决办法
  16. Nature子刊:机器学习方法扩展了anti-CRISPR蛋白家族的所有成员
  17. css清除浮动大全,共8种方法。
  18. 很不错的点餐系统应用ios源代码完整版
  19. 软件定义的网络--改头换面的改造?
  20. 从脚本学python(秋名山车神)

热门文章

  1. 一个自动完成插件的类(TextBox 版)
  2. WebLogic Platform 8.1 SP3 简体中文版发行
  3. mysql 查询优化 ~ explain与索引失效
  4. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码...
  5. 报表学习总结(一)——ASP.NET 水晶报表(Crystal Reports)的简单使用
  6. 外边距塌陷之clearance
  7. 【转】15个最受欢迎的Python开源框架
  8. 【原創】WinMo之移動今日插件
  9. Spread for Windows Forms快速入门(10)---绑定到数据库
  10. Python文件夹与文件的操作