查看: 2353|回复: 5

关于array在cookbook中的osgmygui和mygui结合的示例的问题

[复制链接]

该用户从未签到

发表于 2012-12-7 20:02:16 | 显示全部楼层 |阅读模式
osgmygui实例中:MYGUIManager.cpp文件中的

  1. void MYGUIManager::saveImage( int width, int height, MyGUI::PixelFormat format, void* texture, const std::string& filename )
  2. {
  3.     GLenum pixelFormat = 0;
  4.     unsigned int internalFormat = 0;

  5.     switch ( format.getValue() )
  6.     {
  7.     case MyGUI::PixelFormat::L8: pixelFormat = GL_ALPHA; internalFormat = 1; break;
  8.     case MyGUI::PixelFormat::L8A8: pixelFormat = GL_LUMINANCE_ALPHA; internalFormat = 2; break;
  9.     case MyGUI::PixelFormat::R8G8B8: pixelFormat = GL_BGR; internalFormat = 3; break;
  10.     case MyGUI::PixelFormat::R8G8B8A8: pixelFormat = GL_BGRA; internalFormat = 4; break;
  11.     default: return;
  12.     }

  13.         internalFormat = 1;

  14.     unsigned int size = width * height * internalFormat;
  15.     unsigned char* imageData = new unsigned char[size];
  16.     memcpy( imageData, texture, size );
  17.    
  18.     osg::ref_ptr<osg::Image> image = new osg::Image;
  19.     image->setImage( width, height, 1, internalFormat, pixelFormat, GL_UNSIGNED_BYTE,
  20.         static_cast<unsigned char*>(imageData), osg::Image::USE_NEW_DELETE );
  21.     image->flipVertical();
  22.     osgDB::writeImageFile( *image, filename );
  23. }
复制代码
1.  switch ( format.getValue() )中的getValue()在MyGUI:ixelFormat不存在, 我用的mygui3.2和mygui3.0.
2. 加载cow.osg到场景中,会被mygui所在的相机遮挡住, 去mygui的背景,并把包含mygui元素的geode直接加到group中,不同种hud相机添加到group中,可以像是牛。

该用户从未签到

发表于 2012-12-11 10:53:29 | 显示全部楼层
第一点,您可以查看一下这个函数改成了什么,也许只是简单换了一个名字
第二点,我不知道您遇到了什么问题

该用户从未签到

发表于 2013-11-24 17:45:54 | 显示全部楼层
请问,确定在cookbook这本书中看到吗,我下载了个,怎么没看到与CEGUI结合的讲解啊?

该用户从未签到

发表于 2013-11-25 12:47:50 | 显示全部楼层
我用的也是3.2,我把你问题1中的代码换成了如下:
  1. if (format==MyGUI::PixelFormat::L8)
  2.         {
  3.                 pixelFormat = GL_ALPHA; internalFormat = 1;
  4.         }
  5.         else if (format==MyGUI::PixelFormat::L8A8)
  6.         {
  7.                 pixelFormat = GL_LUMINANCE_ALPHA; internalFormat = 2;

  8.         }
  9.         else if (format==MyGUI::PixelFormat::R8G8B8)
  10.         {
  11.                 pixelFormat = GL_BGR; internalFormat = 3;
  12.         }
  13.         else if (format==MyGUI::PixelFormat::R8G8B8A8)
  14.         {
  15.                  pixelFormat = GL_BGRA; internalFormat = 4;
  16.         }
复制代码

该用户从未签到

 楼主| 发表于 2014-7-16 22:43:55 | 显示全部楼层
array 发表于 2012-12-11 10:53
第一点,您可以查看一下这个函数改成了什么,也许只是简单换了一个名字
第二点,我不知道您遇到了什么问题

请问mygui里面怎么使鼠标不响应按钮透明区域。

该用户从未签到

发表于 2015-3-31 23:24:38 | 显示全部楼层
saber 发表于 2014-7-16 22:43
请问mygui里面怎么使鼠标不响应按钮透明区域。

要判断产生事件时,是不是有mygui的控件focus了,如果是就return true,让这个事件不再往下传导了,就可以可以屏蔽了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表