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变换各向量值是多少?
[解决办法]
[解决办法]通过视图矩阵的变化 目的是使你能看到物体 但这时候仍然是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没有区别,结果应该是一样的,你还是再看看其他地方的原因吧