3D引擎:Horde3D:如何解析Shader文件(一)

本文详细介绍了在3D引擎Horde3D中如何解析Shader文件,从Android JNI层读取Assets文件,利用libzip库加载文件内容,再到Shader类的load函数对内容进行处理,包括FX、VS_OVERLAY和FS_OVERLAY三个部分的解析。通过Tokenizer进行分句,为每个属性赋值。
摘要由CSDN通过智能技术生成
在上一帖中,http://blog.csdn.net/jinghouxiang/article/details/49994983

说了 如何从 Android的jni层获取 Assets文件夹下 文件的路径名, 获取路径名后 需要将文件中的数据读取到char 数组中

假如 assets下 有一文件为 Shader/test.shader
rootDir 为我们读取文件的根目录: assets/
这样定义 加载 test.shader数据的 函数如下
bool ParseText::loadShader(std:: string &filename)
{
       fullFileName = rootDir +filename; 
      LOG_INFO( "ParseText","begin to open file" );
       zip_file * file = zip_fopen( apkArchive, fullFileName .c_str(), 0);

       if(file == NULL)
      {
             return false ;
      }

      LOG_INFO( "ParseText","end open file" );
       //char data[];
       int size = file->bytes_left ;
       char *data = (char *)malloc( sizeof(char )*size);
       int state;


      state = zip_fread(file, ( void *)data, size);
      LOG_INFO( "ParseText","begin to read file: %d, %d" , state,  size);
       if(state == 0)
      {
             return false ;
      }
      data[size]= '\0';


       if(!load(data, size))
      {
             return false ;
      }


       return true ;
}


 以上使用libzip的 两个api,
zip_open 从 解压的 apk中 获取 路径名为 fullFileName的文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值