首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

dx 坐标变换?该如何处理

2012-03-01 
dx 坐标变换?shader中对顶点不做世界,视图,投影的变换直接输出原始坐标变换得到的坐标是什么意思?[解决办

dx 坐标变换?
shader中对顶点不做世界,视图,投影的变换 直接输出原始坐标  
变换得到的坐标是什么意思?

[解决办法]
如果不做变幻直接输出的话,那就没有3D功能了,变成了2D.
我的界面绘制shader就是这样直接输出的。
[解决办法]
如果你用shader 就要手动对顶点那些做变换
不做变换,按照原始输出 就没3D 效果。
[解决办法]

探讨
引用:引用:引用:如果不做变幻直接输出的话,那就没有3D功能了,变成了2D. 我的界面绘制shader就是这样直接输出的。这样的坐标系是什么意思  我要的效果就是没有3d的  只要2d的 得到的结果就可以认为是2D的,只是需要和屏幕坐标进行一次映射。系统会使用Viewport中的数据对shader输出的坐标进行一次变换,变换的结果就是屏幕上的坐标。为了进行正确的变换,shader输出的数值应该是在[0,1]之间的,比如,分辨率800*600,shader输出(0.5,0.5)的话,就会被映射到(400,300)这样。
VertexPT* v = 0;
v[0] = VertexPT(0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
v[1] = VertexPT(1.0f, 0.0f, 0.0f, 1.0f, 0.0f);
v[2] = VertexPT(0.0f, -1.0f, 0.0f, 0.0f, 1.0f);
v[3] = VertexPT(0.0f, -1.0f, 0.0f, 0.0f, 1.0f);
v[4] = VertexPT(1.0f, 0.0f, 0.0f, 1.0f, 0.0f);
v[5] = VertexPT(1.0f, -1.0f, 0.0f, 1.0f, 1.0f);
这是我的顶点信息 
outVS.posH = float4(posL, 1.0f);
这是经过shader输出的 
经过上面的操作  绘制的效果是占窗口的右下角的1/4  这是怎么回事

[解决办法]
对不起,之前说错了。
vertex shader的输出,x和y坐标是限制在[-1,1]的范围内,z的限制是[0,1],w一般设为1。
但是在OpenGL里面,Z的取值范围是[-1,1],和D3D有区别。之前一直想着D3D的取值范围是[0,1],结果不自觉的就写成[0,1]了,真抱歉。

热点排行