CEGUI渲染概论

CEGUI渲染概论
1、几个重要的类
Direct3D9Renderer负责CEGUI的Render的接口
RenderingSurface渲染接口类
RenderingWindow可渲染窗口
RenderTarget的继承关系相关类。
Direct3D9GeometryBuffer类
其方法
 voiddraw()const;//渲染
   voidsetTranslation(constVector3&t);

大家好,又见面了,我是你们的朋友全栈君。

1、几个重要的类

Direct3D9Renderer 负责CEGUI的Render的接口

RenderingSurface 渲染接口类

RenderingWindow 可渲染窗口

RenderTarget的继承关系相关类。

Direct3D9GeometryBuffer类

其方法

 void draw() const; //渲染
    void setTranslation(const Vector3& t);
    void setRotation(const Vector3& r);
    void setPivot(const Vector3& p); //旋转轴
    void setClippingRegion(const Rect& region); //裁剪区域
    void appendVertex(const Vertex& vertex); //加入顶点
    void appendGeometry(const Vertex* const vbuff, uint vertex_count);
 //加入顶点BUFF
    void setActiveTexture(Texture* texture); //设置当前互动纹理
    void reset();
    Texture* getActiveTexture() const;
    uint getVertexCount() const; //顶点个数
    uint getBatchCount() const; //BatchInfos个数,BatchInfos存储纹理信息
    void setRenderEffect(RenderEffect* effect); //当前使用的RenderEffect
    RenderEffect* getRenderEffect();

由于公司不能上传图片,因此这些需要查阅相关CEGUI代码。不过这些类绝对关旭CEGUI渲染

2、CGUI Image渲染流程:
Draw过程:
1、渲染区域与目标区域计算偏移。
2、图片渲染区域(Rect)与纹理渲染区域(Rect)的计算。
3、 构造该图片的顶点信息,Vectex[6] 2个三角形,结构体包括顶点坐标,顶点颜色,顶点纹理UV。
4、 图片相关联GeometryBuffer设置当前使用纹理,以及加入刚才构造的顶点信息。

Image Draw并没有做出渲染,只是一些渲染计算,真正渲染要交给GeometryBuffer的Draw做出。这里重复其Draw过程:
1、SetScissorRect设置裁剪区域。
2、世界坐标变换。
3、设置纹理混合方式。
4、RenderEffect的PASS的调用
5、纹理,已经纹理相关顶点渲染

3、CEGUI窗口的渲染流程:
其实就是System中的renderGUI过程
1、 beginRendering:
(1)设置顶点格式。
(2) 设置PS和VS,这里都是空,他没有Shader处理,依然是固定管线。
(3)SetRenderState,设置device状态
(4)SetSamplerState,设置纹理寻址方式
(5)SetTextureStageState,设置颜色计算方式。
(6)SetTextureStageState,Alpha的计算方式。
(7)SetSamplerState,纹理Filter
(8)  设置颜色混合不取纹理颜色,打开Alpha混合,
(9)设置视图矩阵VIEW
2、 获取ActiveSheet的RenderingSurface,并清除图形信息
3、 获取Window的上下文相关信息,是通过windowRenderer获取的,其中包括RenderingSurface,窗体本身,当前窗体坐标,在Queue等级。这里解释下RenderQueueID其标记Queue的渲染等级。
4、 清空clearGeometry。
5、 渲染其本身,然后渲染其子窗口。
6、阐述下Render的过程:
(1)清空曾经Cache到的GeometryBuffer,因为是ReRender需要清空上次缓存的Buffer。
(2)渲染前前置事件调用。
(3)渲染窗口本身,最底层其实也是Image的Draw
(4)调用渲染结束事件。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shadow_gz/archive/2010/11/04/5987443.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MapReduce 编程不可怕,一篇文章搞定它

    MapReduce 编程不可怕,一篇文章搞定它前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系正文需求:WordCount,大数据领域的HelloWorld。Mapperpackagecom.shockang.study.bigdata.mapreduce;importjava.io.IOException;importorg.apache.hadoop.io.IntWr

    2022年6月14日
    30
  • struts2之多个文件上传

    struts2之多个文件上传

    2021年8月10日
    49
  • C语言编写一个计算器(附全源代码)「建议收藏」

    C语言编写一个计算器(附全源代码)「建议收藏」这个计算器其实是我老师布置的一个c语言大作业,捉摸着搞了那么久的东西不能浪费了吧,于是我分享下我的代码和大概思路给个关注点个赞,后续我会分享更多我们学生党的作业问题白嫖党们先看代码,我就先上上全代码,干!(一)软件环境:Devc++我用的这个软件哈,个人感觉这里功能简单,特别容易上手。看图说话,是不是很简单嘛,又不复杂。(二)设计方案根据自学所得栈进行数据和符号的存储再输出,先设立单独的数据栈符号栈,我们以top=-1为标准,判断其是否为空栈,当然也用到了学过的struct来构建栈,先把字符存

    2022年6月3日
    237
  • Python判断文件、文件夹是否存在,不存在则创建

    Python判断文件、文件夹是否存在,不存在则创建本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末判断文件是否存在,不存在则创建#判断文件是否存在不存在则创建一个ifnotos.path.isfile(filename):fd=open(filename,mode=”w”,encoding=”utf-8″)fd.close()判断文件夹是否存在,不存在则创建#判断文件夹是否存在,不存在则创建一个ifnotos.path.exists(path):os.mkdir(p

    2022年6月25日
    53
  • slam技术前景_无人机航拍技术毕业论文

    slam技术前景_无人机航拍技术毕业论文过去几年,扫地机的出现使得SLAM名声大噪,这个被业界认为是实现机器人自主移动的关键技术,已逐渐进入人们的视野,而随着无人驾驶、AGV等行业的兴起,又使其找到了另一片广阔天地。SLAM的前世今生对于定位、定向等需求人们其实在千年前就有了,最早时期,古人提出了夜观天象,基于遥远恒星的方位推断自身所处的位置,进而演变出一门博大精深的学科“牵星术”,用牵星板测量星星实现纬度估计。直到1964…

    2022年9月1日
    4
  • Cocos2d-x滚动列表具体解释(CCScrollView的使用)

    Cocos2d-x滚动列表具体解释(CCScrollView的使用)

    2021年11月24日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号