作者teexit (獃獃)
看板GameDesign
标题Re: [问题] XNA 透镜效果以及一些其他绘图问题?
时间Wed Apr 21 21:30:23 2010
※ 引述《F23ko (纯洁)》之铭言:
: 但我不知道XNA有没有现成的函式可以用
: 如果有现成的函式的话,希望望能获得关键字
: 如果没有的话,希望能提示该从哪个方向下手
: 另外,我在两本书上看到的绘图方式
: 2D方面都是贴图上去
: 3D则是画三角形拼出形状,再贴图上去
: 似乎没看到直接画出图形的办法
: 像是WindoesFrom的System.Drawing.FillEllipse()之类的.....
: 换句话说,如果我想画出圆形之类的简单图形,那就得画出一堆顶点
: 再透过投影矩阵换算後才会出现在萤幕上
: 那,若我要制作一个选单,甚至HP条之类的东西 (就是几个长方形的简单图形)
: 该不会都要经过投影或是贴图吧?
: 有没有2D状况下可以直接在萤幕上绘图的办法?
1. 针对於RTT的部分...
XNA有一个物件叫做RenderTarger2D,宣告完毕以後初始化它
EX:
RenderTarget2D renderRT;
.....
renderRT = new RenderTarget2D(GraphicsDevice, width, height, 1, Surface
Format.Color);
第1-3的参数我就不说明了 第四个印象中没记错的好像是用来建立一些filter
图层,至於SurfaceFormat这边,可以参照XNA MSDN...
因为用途不同所需要的就不一样~(这很重要~~!)
接下来就是在Draw的函数
GraphicsDevice.SetRenderTarget(0, renderRT);
// 画东西~~~
GraphicsDevice.SetRenderTarget(0, null);
如果你想要知道他画了哪些东西在RT里面,你可以用spriteBatch + RT所提供
的getTexture() 方法
EX:
spriteBatch();
spriteBatch.Draw(renderRT.getTexture(), Vector.Zero, Color.White);
spriteEnd();
至於你有这些texture以後,你接下来做的事情就是影像处理...
你可以把他锐化或做一些而外效果
不过这边就是HLSL的地方(建议用HLSL去做,你用CPU去算这个...-.-)
http://www.neatware.com/lbstudio/web/hlsl.html
上面有些HLSL在影像处理的运用范例,不过网路上还有更多,可以GOO看看
RenderTarget蛮不错用的像是可以用来做Deferred shading~
至於你说的第二个问题 HP显示,你有两个做法
1. 自己画Quad然後指定贴图座标,就把他当作texture mapping一样来做
(这方面可以好好研究)
2. 使用XNA的spriteBatch来画...
(2D这边我应该不用讲很多,不过spriteBatch.begin这边有个参数要注意
就是第三个,我有点忘记了名字了,不过就是选择要saveState)
(原因是因为spriteBatch呼叫以後,他会去变动一些graphicsDevice的设定
,网路上面有说用saveState的方式,执行效能会降低,建议手动调整)
http://0rz.tw/pfpA8 可以参考看看
以上仅供参考
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.110.189.43
1F:推 F23ko:感谢先 我需要花一点消化一下内容 04/21 22:01
2F:推 F23ko:等等.... 看到一个关键字 XNA MSDN? 有这个东西喔? 04/21 22:05
3F:→ F23ko:我知道微软的msdn.... 04/21 22:05
5F:→ F23ko:还在想说在上面都找不到xna的组件说明很麻烦.... 04/21 22:06
6F:→ teexit:英文还OK的画建议看英文的 XNA这边我记得没错没有中文版 04/21 22:08
8F:→ F23ko:直接把函式、物件名称打进去,找不到这里面的东西 @@ 04/21 22:25
9F:→ F23ko:我的英文很糟糕 还需要把快显注解的xaml掏出来翻译才能看的 04/21 22:26
10F:→ F23ko:懂 = = 04/21 22:27
12F:推 F23ko:=口=||| 我xna3.1还没学熟熟 4.0就出了!? 04/21 22:29
13F:→ teexit:是上面的没错XD 不过有些东西 你还是要多看才去找函数 04/21 22:30
14F:→ teexit:这样才比较好... 04/21 22:31
15F:→ teexit:4.0 Content比较麻烦... 不过4.0最大改变就是多了WP7 04/21 22:31
16F:→ teexit:所以现在可以做WP7上面的游戏 (window phone 7) 04/21 22:31
17F:推 changyin:RenderTarget2D 借问一下第三个参数的意义是类似图层吗? 04/22 11:42
18F:→ teexit:我印象中0是说建mipmap的层次 04/22 12:41
19F:推 changyin:请问楼上XNA里的InputSequencExample如何使用在3D游戏里 04/24 15:35
20F:→ changyin:我要使用double jump人物要跳起来程式码是要加在哪个地方 04/24 15:38
21F:→ changyin:有没有像恶魔猎人那种输入方式可以实作的?或有甚麽演算法 04/24 15:41
22F:→ teexit:这部分我没有设计过,不过直觉想的话,就是把他放在控制 04/24 17:26
23F:→ teexit:控制脚色操作的地方应该就可以了...(那个范例我没特别去看) 04/24 17:26
24F:→ teexit:不过我有看到他的说明文件里面有说要怎麽使用 04/24 17:27
25F:推 changyin:有关他的MOVE.CS里 有一段game might add PerformMove() 04/24 17:57
26F:→ changyin:他的意思是甚麽? 04/24 17:57
27F:→ teexit:现在有个很重要的问题是 我并没有trace这个CODE 所以这部分 04/24 19:32
28F:→ teexit:的问题我比较没有办法回答你,如果真的很急需要答案 04/24 19:33
29F:→ teexit:你可以到creator club问一下会比较快 04/24 19:33
30F:→ teexit:不过猜 刚刚看了一下game.cs 他里面有一个move相关的初始化 04/24 19:34
31F:→ teexit:我再想会是他要你可以自己写一个函数,来去做这些Move相关 04/24 19:35
32F:→ teexit:的事情!? 像是一些操作,会是设定等等 我目前推测是这样 04/24 19:35
33F:→ teexit:他下面update那边有很多检查,所以我才这样猜 04/24 19:35