永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

为适应dx11,airengine所作出的修改。

1、渲染状态归类封装
DX9下的渲染状态比较乱,不像DX11那样把渲染状态归为几类。按DX11的归类,同样也适应DX9的API。
2、VertexDeclaration从VertexBuffer里改成封装在VertexShader里。
这里要说明一下,VertexDeclaration封装在VertexBuffer里本来就是不太合理的,因为VertexBuffer就是一个Buffer,实际上和顶点格式关系不太大。而且,dx11中的inputlayout的创建还依赖于shader的创建代码,因此,必须要把vertexdeclaration移到vertexshader里。而这种做法会引起DX9的一个问题,下面会说明到。
3、引擎所有渲染都用上shader,全面抛弃固定管线。
正如上面说到,如果vertexdecalaration的创建要依赖于shader,那么固定管线下就不能再自己创建vc(vertexdeclaration)了,而考虑到引擎要支持双渲染器,所以有些操作要统一,就不保留固定管线了。
4、GPU参数设置的调整
之前GPU的参数更新封装在一个类GPUParameter里,主要是负责GPU参数的值的设置,但随着DX11的加入,这里问题就出来了。DX9下面,没有constantbuffer的概念,只有一个一个参数设置到寄存器,而原来引擎的设计就是针对DX9的这套机制来实现的。所以,现在引擎作出调整,在dx9渲染系统下建一个类D3D9GPUParameters继承自GPUParameter,DX9下如何设置参数在这个类下实现。
5、RenderTarget的接口改变
DX11下是把所有RenderTarget放到一个数组中然后设置进去的,而DX9是一个一个设置进去,所以当要实现multirendertarget的时候,如果引擎要适应两种渲染器,那只能用DX11的设置方法了。

posted on 2012-10-03 08:19 狂烂球 阅读(620) 评论(1)  编辑 收藏 引用 所属分类: 图形编程

评论

# re: 为适应dx11,airengine所作出的修改。 2015-01-26 11:02 痤疮最佳治疗方法

不错的文章,学习了  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理