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

D3D在z=1平面上画三角形 不显示?该怎么解决

2012-03-09 
D3D在z1平面上画三角形 不显示?一个简单的D3D程序,在Z1平面上显示一个三角形v[0] ColorVertex(-1.0f,

D3D在z=1平面上画三角形 不显示?
一个简单的D3D程序,在Z=1平面上显示一个三角形
v[0] = ColorVertex(-1.0f, 0.0f, 1.0f, D3DCOLOR_XRGB(255, 0, 0));
v[1] = ColorVertex( 0.0f, 1.0f, 1.0f, D3DCOLOR_XRGB( 0, 255, 0));
v[2] = ColorVertex( 1.0f, 0.0f, 1.0f, D3DCOLOR_XRGB( 0, 0, 255));
不设置view变换的话,就显示出来一个三角形

但若
D3DXMATRIX view;
D3DXVECTOR3 eye(0.0f,0.0f,0.0f),at(0.0f,0.0f,1.0f),up(0.0f,1.0f,0.0f);
D3DXMatrixLookAtLH(&view,&eye,&at,&up);
Device->SetTransform(D3DTS_VIEW,&view);

则不显示 为什么?

at向量改为(0.0f,0.0f,0.9f)就显示……其实z坐标在0.5到1.3之间显示 为什么啊?

那不就是一个方向吗,大小无所谓的,为什么不显示?

默认的view变换各向量值是多少?

[解决办法]

探讨
引用:
近平面是1.0,你的相机看的位置也是从1.0开始的,所以看不到了
至少要把你的物体稍微往1.0以后放一点点,或者把近平面往前放一点点

太麻烦你了,呵呵
不过摄像机位置是在eye(0.0f,0.0f,0.0f)啊,是在原点看向z轴啊,
所以我认为1.0和100.0是一样的啊,都是指向z轴正向,摄像机都在原点,
为什么有时看到,有时看不到(……

[解决办法]
通过视图矩阵的变化 目的是使你能看到物体 但这时候仍然是3d场景
在设置投影矩阵的时候 是将3d变为2d 然后就可以显示在屏幕上了 1和1000分别是透视投影的近平面和远平面 z值怎么会有默认的这一说呢? 如果你不经过世界矩阵 视图矩阵 投影矩阵变化 那么在屏幕上输出就应该是
-1.0f, 0.0f, 1.0f, 1.0
 0.0f, 1.0f, 1.0f, 1.0
 1.0f, 0.0f, 1.0f, 1.0
也就是说输出就是你的原来的位置+w值
经过变换的坐标 x y的范围是-1 ---1
z是0--1
以上是个人见解 不太明白你要问什么
[解决办法]
D3DXMatrixLookAtLH
This function uses the following formula to compute the returned matrix.

zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)

 xaxis.x yaxis.x zaxis.x 0
 xaxis.y yaxis.y zaxis.y 0
 xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l

从这个函数的实现可以看到,你的0.9和1没有区别,结果应该是一样的,你还是再看看其他地方的原因吧

热点排行