游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1743|回复: 1

新人,弱弱的问题求助一下各位大侠

[复制链接]

2

主题

8

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2011-5-23 01:22:00 | 显示全部楼层 |阅读模式
我最近需要处理一个RGBA数据流,想转存为图片,原始流来自ogre的Texture PF_A8R8G8B8格式。现在想着能还原回OGRE对象,然后再保存成图形。但实际编码后发现,不知道如何以一个内存Buffer创建一个TexturePtr对象?

请教各位大大,如果把一个内存Buffer创建成一个TexturePtr?有好心的大大,最好能给几句代码。谢谢啦

我的代码是这样写的:




  1. int _tmain(int argc, _TCHAR* argv[])
  2. {
  3.         byte* buf=new byte[0x8000];
  4.         char fn[]="D:\\test\\image\\bmp_xx11.bmp";
  5.         memset(buf,0,0x8000);
  6.         FILE* f=fopen(fn,"r");
  7.         if (f!=NULL){
  8.                 printf("文件[%s]打开成功!\r\n",fn);
  9.                 int iCnt=fread(buf,1,0x8000,f);
  10.                 if (iCnt!=0){
  11.                         printf("读取文件成功[%d]。\r\n",iCnt);
  12.                         DWORD  bytesize = (64 * 4 * 36);
  13.                         Ogre::DataStreamPtr odc(new Ogre::MemoryDataStream( static_cast<void*>(buf), bytesize, false));
  14.                         //下面这句创建TexturePtr对象出问题,无法真正创建,getSingleton()返回为NULL
  15.                         Ogre::TexturePtr textPtr=Ogre::TextureManager::getSingleton().createManual
  16. ("__dd_xx_0001", "General", Ogre::TextureType::TEX_TYPE_2D,  64, 36, 1,0, Ogre::PixelFormat::PF_A8R8G8B8 );
  17.                         textPtr->load();
  18.                                 //下面注释掉的这句这方式创建也不行,我晕了,不懂该怎么弄,help~~~~~~~
  19.                         //Ogre::TexturePtr tex=Ogre::TexturePtr() ;
  20.                
  21.                         textPtr->setTextureType(Ogre::TextureType::TEX_TYPE_2D);
  22.                         textPtr->setNumMipmaps(1);
  23.                         textPtr->setGamma(1.0f);
  24.                         textPtr->enable32Bit(true);
  25.                         textPtr->loadRawData(odc, 64, 36, Ogre::PixelFormat::PF_A8R8G8B8);


  26.                         DODO::_saveTextureToLocal(textPtr,"D:\\test\\image\\a.png");
  27.                         printf("保存成功!\r\n");
  28.                 }
  29.         }else{
  30.                 printf("文件[%s]打开失败!\r\n",fn);
  31.         }
  32.         system("Pause");
  33.         return 0;
  34. }
复制代码

2

主题

8

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2011-5-23 01:28:00 | 显示全部楼层

Re:新人,弱弱的问题求助一下各位大侠

补充一下,我之前没接触过OGRE,所以可能问题有点弱,但我真的不懂,烦请知道的大大能不厌其烦,帮忙一下:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 06:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表