脚本与渲染器 .
来源:互联网 发布:手机淘宝外卖在哪里 编辑:程序博客网 时间:2024/04/30 08:14
一直以来都想做一个脚本驱动的渲染器.就是说可以用脚本定制渲染器的行为,比如创建多少个渲染队列,如何渲染.多少RenderTarget, 每个物体的材质也是一样. 要生成多少个Pass,每个Pass是立即渲染呢还是放到那个队列里 .
其实我是个很懒的人 ,这个想法早在去年就有了.一直拖到现在,昨天晚上实在受不了自己的懒惰了.也受点老宋一些刺激,顺手就抓了个AngelScript.把它集成到 渲染器里了.一个简单的渲染脚本类似如下
int queueNormal;
int queueTranslucy;
int queueGlow;
int texScreen;
int quadShader;
int colorMorphShader;
int rt;
int x , y ;
int x2 , y2;
int dx , dy;
int dx2 , dy2;
void StartRenderer()
{
x = 0;
y = 0;
dx = 1;
dy = 2;
x2 = 10;
y2 = 40;
dx2 = 2;
dy2 = 1;
queueNormal = createQueue("Normal");
queueTranslucy = createQueue("Translucy");
queueGlow = createQueue("Glow");
texScreen = load2DTexture("default","videoTexture.mpeg");
quadShader = loadShader("Simple.shader");
colorMorphShader = loadShader("SimpleColorMorph.shader");
rt = createRenderTexture("RT",1024,1024,1);
}
void StopRenderer()
{
clearRenderContex();
}
void Render(float passedTime)
{
x += dx;
y += dy;
if(x < 0 || x > 600) dx =-dx;
if(y < 0 || y > 400) dy =-dy;
x2 += dx2;
y2 += dy2;
if(x2 < 0 || x2 > 600) dx2 =-dx2;
if(y2 < 0 || y2 > 400) dy2 =-dy2;
renderQueue(queueNormal);
pushRenderTexture(rt,0);
clearScene(1.0f,0.0f,0.0f,1.0f,1,0);
renderQueue(queueNormal);
popRenderTexture();
enter2DMode();
pushShader(quadShader);
draw2DTextureRect(rt,x,y,500,400,1.0,1.0,1.0,1.0);
popShader();
pushShader(colorMorphShader);
draw2DTextureRect(texScreen,x2,y2,400,300,1.0,1.0,1.0,1.0);
popShader();
leave2DMode();
}
AngelScript是C语法的. 可以方便的把脚本稍加转化编译进程序里,或者做成dll插件的形式,在发布程序的时候能保证最大的效率.非常的不错.
以上这个脚本能在正常绘制一个普通渲染队列以外,额外的绘制两个矩形. 脚本能控制渲染器多少的行为完全看你给脚本暴露了多少的接口.
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 脚本与渲染器 .
- 渲染器与swing
- Swing模型与渲染器
- Swing模型与渲染器
- Swing模型与渲染器
- 卡通渲染效果脚本
- RenderScript(渲染脚本)
- 脚本 网格 渲染
- 渲染器脚本应用实例之全屏扭曲。
- 局域网内部管理行为应该如何控制?
- 微软收购网络广告公司aQuantive(转)
- 依据行业特性进行ERP选型
- Delphi for PHP 可以下载试用了
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 脚本与渲染器 .
- 击败微软雅虎!Google高价收购DoubleClick(转)
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(二)
- 服装ERP案例:道讯科技协力森马集团ERP升级到小型机
- TOP 1比不加TOP慢的疑惑
- WaitSingleObject不灵了?
- linux使用手记
- 再谈Delphi vs VC++(非常精彩)
- Active Directory和Exchange灾难恢复参考文档