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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • jaccard系数怎么计算例子_装甲车系数与距离关系

    jaccard系数怎么计算例子_装甲车系数与距离关系Jaccard(杰卡德)系数主要用于计算样本间的相似度。Jaccard系数的计算方式为:样本交集个数和样本并集个数的比值,用J(A,B)表示。公式为:这里写图片描述jaccard系数相反的即为jacc

  • Mybatis-plus操作json字段实战

    Mybatis-plus操作json字段实战后端动态列设计与实现三部曲,这是最后一步,使用java语言,结合mybatis-plus神技操作json字段。简单介绍下mybatis-plus,大厂中mybatis使用的非常多,而mybatis-plus是基于mybatis做了扩展,进一步增强,在不影响数据存储的情况下,简化操作方式。有兴趣的朋友可以去官网了解:https://www.baomidou.com/1、架构图2、功能3、表结构DROPTABLEIFEXISTSuser;CREATETABLEuser(……

    2022年10月30日
  • 微软对ice服务器被炸的态度,我的世界ice服务器火了是因为被炸吗?「建议收藏」

    微软对ice服务器被炸的态度,我的世界ice服务器火了是因为被炸吗?「建议收藏」我的世界ice服务器被炸了这事情在2020年被炒的火热。本来服务器被炸是正常不过的事情了,但是不知道那个玩家在网上说什么ICE服务器价值好几万,炸服务器的玩家应该承担法律责任。而另一方面,炸服务器的凶手“Mn搜索阿喵”也自称服务器被炸之后它日子不好过。然而戏剧性的一幕发生了,3月29号,ICE服务器官方发表声明,说这一切都是造谣而已,所谓的ICE服务器价值没有好几万,服务器也才开了不到两个月。而…

  • Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能

    本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自行查阅相关知识。 本篇的项目主要是一个学习Spring websocket和STOMP的项目,基于Spring4.0之上。因为Spring4.0之上才支持Websocket。例子比较的简单,但是总体实

  • Docker离线安装教程「建议收藏」

    Docker离线安装教程「建议收藏」一、基础环境Centos7环境下载docker包,我们演示的是19.3.12下载地址将下载好的压缩包上传至服务器下二、开始安装解压docker包tar-zxvfdocker-19.03.12.tgz将解压后的文件复制到/usr/bin下cpdocker/*/usr/bin将docker注册为servicevi/etc/systemd/system/docker.service复制下列配置到docker.service并保存(:wq)[Un

  • 来谈谈Spring构造函数注入的循环依赖问题

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:服务端开发 blog.csdn.net/u010013573/article/details/90573901…

发表回复

您的电子邮箱地址不会被公开。

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