DirectX问一个世界矩阵问题
时间:2011-07-17
来源:互联网
龙书中的D3DXCREATE程序中写着
ID3DXMesh* Objects[5] = {0, 0, 0, 0, 0};
D3DXMATRIX ObjWorldMatrices[5];
然后5个物体分别载入Object里。。。
然后之后定位每一个物体时却可以直接用ObjWorldMatrices一一对应,
那么是什么使得Objects和ObjWorldMatrices关联起来了??一下是一段原程序
D3DXCreateTeapot(
Device,
&Objects[0],
0);
D3DXCreateBox(
Device,
2.0f, // width
2.0f, // height
2.0f, // depth
&Objects[1],
0);
// cylinder is built aligned on z-axis
D3DXCreateCylinder(
Device,
1.0f, // radius at negative z end
1.0f, // radius at positive z end
3.0f, // length of cylinder
10, // slices
10, // stacks
&Objects[2],
0);
D3DXCreateTorus(
Device,
1.0f, // inner radius
3.0f, // outer radius
10, // sides
10, // rings
&Objects[3],
0);
D3DXCreateSphere(
Device,
1.0f, // radius
10, // slices
10, // stacks
&Objects[4],
0);
//
// Build world matrices - position the objects in world space.
// For example, ObjWorldMatrices[1] will position Objects[1] at
// (-5, 0, 5). Likewise, ObjWorldMatrices[2] will position
// Objects[2] at (5, 0, 5).
//
D3DXMatrixTranslation(&ObjWorldMatrices[0], 0.0f, 0.0f, 0.0f);//为什么它能知道对应的是茶壶
D3DXMatrixTranslation(&ObjWorldMatrices[1], -5.0f, 0.0f, 5.0f);//为什么它能知道对应的是箱子
D3DXMatrixTranslation(&ObjWorldMatrices[2], 5.0f, 0.0f, 5.0f);//为什么它能知道对应的是圆柱
D3DXMatrixTranslation(&ObjWorldMatrices[3], -5.0f, 0.0f, -5.0f);//为什么它能知道对应的是圆环
D3DXMatrixTranslation(&ObjWorldMatrices[4], 5.0f, 0.0f, -5.0f);//为什么它能知道对应的是球
ID3DXMesh* Objects[5] = {0, 0, 0, 0, 0};
D3DXMATRIX ObjWorldMatrices[5];
然后5个物体分别载入Object里。。。
然后之后定位每一个物体时却可以直接用ObjWorldMatrices一一对应,
那么是什么使得Objects和ObjWorldMatrices关联起来了??一下是一段原程序
D3DXCreateTeapot(
Device,
&Objects[0],
0);
D3DXCreateBox(
Device,
2.0f, // width
2.0f, // height
2.0f, // depth
&Objects[1],
0);
// cylinder is built aligned on z-axis
D3DXCreateCylinder(
Device,
1.0f, // radius at negative z end
1.0f, // radius at positive z end
3.0f, // length of cylinder
10, // slices
10, // stacks
&Objects[2],
0);
D3DXCreateTorus(
Device,
1.0f, // inner radius
3.0f, // outer radius
10, // sides
10, // rings
&Objects[3],
0);
D3DXCreateSphere(
Device,
1.0f, // radius
10, // slices
10, // stacks
&Objects[4],
0);
//
// Build world matrices - position the objects in world space.
// For example, ObjWorldMatrices[1] will position Objects[1] at
// (-5, 0, 5). Likewise, ObjWorldMatrices[2] will position
// Objects[2] at (5, 0, 5).
//
D3DXMatrixTranslation(&ObjWorldMatrices[0], 0.0f, 0.0f, 0.0f);//为什么它能知道对应的是茶壶
D3DXMatrixTranslation(&ObjWorldMatrices[1], -5.0f, 0.0f, 5.0f);//为什么它能知道对应的是箱子
D3DXMatrixTranslation(&ObjWorldMatrices[2], 5.0f, 0.0f, 5.0f);//为什么它能知道对应的是圆柱
D3DXMatrixTranslation(&ObjWorldMatrices[3], -5.0f, 0.0f, -5.0f);//为什么它能知道对应的是圆环
D3DXMatrixTranslation(&ObjWorldMatrices[4], 5.0f, 0.0f, -5.0f);//为什么它能知道对应的是球
作者: kgstation 发布时间: 2011-07-17
D3DXMatrixTranslation(&ObjWorldMatrices[0], 0.0f, 0.0f, 0.0f);//为什么它能知道对应的是茶壶
====
你理解错了。是这句设置好变换矩阵,然后接着绘制茶壶。
这个关系是需要你指定的。
====
你理解错了。是这句设置好变换矩阵,然后接着绘制茶壶。
这个关系是需要你指定的。
作者: dizuo 发布时间: 2011-07-17
引用 1 楼 dizuo 的回复:
D3DXMatrixTranslation(&ObjWorldMatrices[0], 0.0f, 0.0f, 0.0f);//为什么它能知道对应的是茶壶
====
你理解错了。是这句设置好变换矩阵,然后接着绘制茶壶。
这个关系是需要你指定的。
D3DXMatrixTranslation(&ObjWorldMatrices[0], 0.0f, 0.0f, 0.0f);//为什么它能知道对应的是茶壶
====
你理解错了。是这句设置好变换矩阵,然后接着绘制茶壶。
这个关系是需要你指定的。
那这个关系在哪里啊。。
显示部分只有
for(int i = 0; i < 5; i++)
{
// Set the world matrix that positions the object.
Device->SetTransform(D3DTS_WORLD, &ObjWorldMatrices[i]);
// Draw the object using the previously set world matrix.
Objects[i]->DrawSubset(0);
}啊。。。要怎么指定关系
作者: kgstation 发布时间: 2011-07-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28