Scaleform Gfx的Demo
转载:http://www.xuebuyuan.com/2167614.html
新建一个Demo工程时,编译之前有一些VS的配置是必须的,在Debug和Release下,工程必须包括:
$(GFXSDK)\Src\GRenderer
$(GFXSDK)\Src\GKernel
$(GFXSDK)\Src\GFxXML
$(GFXSDK)\Include
这里$(GFXSDK)环境变量指的就是你安装Gfx的位置,其实如果你能够有Gfx中的Lib何Include文件夹得话,你吧他们放到工程目录下,你就可以使用相对路径来指定这些路径,就不必为每个开发人员安装Gfx了。
至于库文件,就是一些核心的内容,这部分是不会提供源码,所以我们也必须包含这些库文件来提供给应用程序。
$(DXSDK_DIR)\Lib\x86
$(GFXSDK)\3rdParty\expat-2.0.1\lib
$(GFXSDK)\Lib\$(PlatformName)\Msvc80\Debug_Static\
$(GFXSDK)\3rdParty\zlib-1.2.3\Lib\$(PlatformName)\Msvc80\Debug
$(GFXSDK)\3rdParty\jpeg-6b\Lib\$(PlatformName)\Msvc80\Debug
我们开发程序时基本要用的库文件如下:
libgfx.lib
libjpeg.lib
zlib.lib
imm32.lib
winmm.lib
libgrenderer_d3d9.lib
作为一个没有封装过的引擎,在开发程序的时候需要建立以下的一些对象来实现一个对象的加载:
#include "GTimer.h"
#include "GFxEvent.h"
#include "GFxPlayer.h"
#include "GFxFontLib.h"
#include "FxPlayerLog.h"
#include "GRendererD3D9.h"
// GFxLoader 每个应用程序都需要一个Load来读取来自文件的Flash文件
GFxLoader gfxLoader;
// SWF/GFx GFxMovieDef 这是一个具体的定义Flash文件的对象,通过它可以创建一个可操作的Flash对象
GPtr<GFxMovieDef> pUIMovieDef;
// GFxMovieView 这是一个可以操作的Flash对象,通过它可以进行与C++和Flash直接进行通信和传递参数以及一些对影片的操作。
GPtr<GFxMovieView> pUIMovie;
// D3D9 这个是针对这个Deam儿建立的D3D对象。
GPtr<GRendererD3D9> pRenderer;
GPtr<GFxRenderConfig> pRenderConfig;
第一步肯定是要为Gfx分配内存,GFxSystem对象就是这个作用,这个对象在第一个Gfx被调用时获取,并且在结束前不能释放,它位于WinMian函数头里面。
在初始化过程中执行下面的一些操作:
gfxLoader->SetLog(GPtr<GFxLog>(*new GFxPlayerLog()));
//读取文件的对象
GPtr<GFxFileOpener> pfileOpener = *new GFxFileOpener
// 默认方式导入
GPtr<GFxFileOpener> pfileOpener = *new GFxFileOpener;
gfxLoader->SetFileOpener(pfileOpener);
GfxLoader通过GFxFileOpener来读取文件内容,默认为从磁盘读入,也可以从内存或其他资源文件读入。
D3D对象的创建和关联如下:
// GFxD3D
pRenderer = *GRendererD3D9::CreateRenderer();
// GFxLoader
pRenderConfig = *new GFxRenderConfig(pRenderer);
gfxLoader->SetRenderConfig(pRenderConfig);
这样很轻松的就将对象关联进了Gfx Movie中,这里如果不是D3D对象,而是其他对象如GameBryo等,也可以用类似的方法。
接下来就是导入Flash文件了,通过一个宏定义路径UIMOVIE_FILENAME相对路径来导入
//
pUIMovieDef = *(gfxLoader.CreateMovie(UIMOVIE_FILENAME,
GFxLoader::LoadKeepBindData |
GFxLoader::LoadWaitFrame1));
动画实例的创建时通过上面的pUIMovieDef来创建的。
pUIMovie = *pUIMovieDef->CreateInstance(true);
指向动画的第一帧:
pUIMovie->Advance(0.0f, 0);
透明的效果和背景融合。
pUIMovie->SetBackgroundAlpha(0.0f);
接下来就是设置Flash的视窗和缩放方式。//
RECT windowRect = DXUTGetWindowClientRect();
DWORD windowWidth = windowRect.right - windowRect.left;
DWORD windowHeight = windowRect.bottom - windowRect.top;
pUIMovie->SetViewport(windowWidth, windowHeight, 0, 0,
windowWidth, windowHeight);
pUIMovie->SetViewScaleMode(GFxMovieView::SM_ShowAll);//默认的方式,按上面指定窗口比例扩展
如下是一些对齐方式的代码:
pUIMovie->SetViewAlignment(GFxMovieView::Align_CenterRight);
在消息循环里面,flash的事件响应都会在ProcessEvent(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool *pbNoFurtherProcessing) 总进行处理。
总体看起来还是很麻烦的,做了过多的底层操作。
但是如果等到他哈GameBryo集成后的游戏引擎,你会发现这些操作你基本上都不用在去做了,而更加关注的是逻辑的设计,这里的一个Demo只是为了解释一下大体上的一个架构。
Scaleform Gfx的Demo的更多相关文章
- 我所遭遇过的游戏中间件--Scaleform
我所遭遇过的游戏中间件---Scaleform Scaleform帮助开发人员利用现代系统的三维硬件加速性能创建电影品质的菜单.游戏内HUD,动画纹理.迷你游戏以及移动游戏与应用.Scaleform作 ...
- UDK Stat命令
Stat命令(chs en)提供了游戏和引擎各个方面的实时统计信息,输入不同参数会在屏幕HUD上显示对应统计数据. 非Shipping版的UDK才会启用STATS宏,统计逻辑才会编译进exe,才能使 ...
- scaleform mobile sdk for android 多点触摸 修正
修正 scaleform 的多点触控 (随手一记 给后来的人做个参考) scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了) 开始 一直以为 scalefo ...
- qml demo分析(maroon-小游戏)
1.效果展示 这篇文章我还是分析一个qt源码中的qml程序,程序运行效果如下图所示. 图1 游戏开始 图2 游戏中 2.源码分析 这个游戏的源码文件比较多,为了能更清楚的了解整个代码,我先整体分析 ...
- scaleform中ActionScript和UnrealScript的交互
转自:http://www.cnblogs.com/NEOCSL/p/4174134.html scaleform是制作UI的好工具: 1.他可以解放程序员用代码控制的UI效果,例如平移,旋转和缩放都 ...
- 通过一个demo了解Redux
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
随机推荐
- 从Zero到Hero,OpenAI重磅发布深度强化学习资源
https://zhuanlan.zhihu.com/p/49044306 https://spinningup.openai.com/en/latest/
- 【系统移植】uboot详细分析
uboot使用 uboot控制台,倒计时 命令: 调试,操作一些硬件 setenv printenv saveenv nand erase nand write tftp zImage h ...
- 【转】Ubuntu FireFox无法播放网页视频音乐的解决办法
原文:http://www.codeweblog.com/%E8%A7%A3%E5%86%B3qq%E9%9F%B3%E4%B9%90%E7%BD%91%E9%A1%B5%E7%89%88%E5%9C ...
- 【九天教您南方cass 9.1】 06 绘制方格网
同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取测量空间中. [点击索取cass教程]5元立得 (给客服说暗号:“ ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-2 基于FSMC总线的ARM与FPGA通信
视频简介: 该视频介绍基于FSMC总线的ARM与FPGA通信 源视频包下载地址: 链接:http://pan.baidu.com/s/1slJDoQD 密码:tmw7 银杏科技优酷视频发布区: ...
- webstorm开发vue项目环境配置
1.首先安装nodejs,官网下载nodejs安装包,默认安装NPM包管理器(国内使用npm需要FQ,也可以使用淘宝的镜像:npm install -g cnpm –registry=https:// ...
- tomcat启动时非常慢,启动时 一直卡在Root WebApplicationContext: initialization completed
每次重启自己的服务tomcat都需要卡住很长时间,每次都是日志停在 Root WebApplicationContext: initialization completed in 744 ms这个地方 ...
- 【转】Spring Framework灰度发布
今天简单介绍下SpringFramework微服务中几种服务发布策略以及实现方式.我接触过的有蓝绿.滚筒和灰度发布. 蓝绿发布: 简单说就像美帝选总统投票一样,非蓝即绿一刀切,这个其实也是传统软件架构 ...
- Ubuntu 14.04 安装 Blender,并放桌面
1.打开Blender官网 2.在主页点击down按钮,跳转到下载页面 3.根据自己的操作系统,选择合适的版本,这里使用的是ubunut 64位,所以下载Linux 64bit,保存文件,一般保存到h ...
- last
last reboot 显示系统最后重启的历史记录 last -w 显示自系统启动以来,所有登录的用户(全名)