2 wsfxzxb wsfxzxb 于 2015.07.21 16:55 提问

DirectX怎样在立方体表面旋转纹理

我往一个立方体表面贴了一个火焰纹理,想让火焰绕中心旋转,但是作出来的效果是火焰绕左上角旋转。
图片说明

图片说明

图片说明
其中的关键代码如下:
/* 根据游戏时长变换纹理坐标 */

static float time = 0;
float t = mTimer.getDeltaTime();//每帧时长

D3DXMATRIX texMtx,TranMtx, RotateMtx;
D3DXMatrixTranslation(&TranMtx, 0.5f, 0.5f, 0.0f);//创建平移矩阵
D3DXMatrixRotationZ(&RotateMtx, time += t); //创建旋转矩阵
texMtx = TranMtx * RotateMtx; //得到最终变换矩阵

mfxTexMtxVar->SetMatrix((float*)&texMtx); //应用到效果文件中的矩阵变量

请问应该如何实现?

附:我还发现创建平移矩阵时,修改相应的偏移量居然对最终的效果毫无作用!奇了怪了!

2个回答

gtrs426
gtrs426   2015.07.23 13:09
已采纳

你设置的中心点不对,首先d3d默认的旋转坐标点是左上定点,要想老中心点旋转就得重新设置旋转点,可以去找下具体设置的函数

caozhy
caozhy   Ds   Rxr 2015.07.21 19:00
wsfxzxb
wsfxzxb 感谢提供资源。那个页面我仔细看了,说的是立方体旋转。我的意思是立方体本身不动,但它的八个面的纹理绕中心旋转——怎么说呢,就如同立方体是一个立方体镜子的一样,它摆在桌子上不动,但每面显示的火焰绕中心(即每面的对角线的交点)旋转。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
OpenGL程序二:实现纹理映射到3D立方体上
在之前的程序进行的改动,用于创建纹理的图片在D:\\目录下放置,文件名为:11.bmp 下面是纹理映射的例子程序 Texture Map #include // Windows的头文件 #include // 包含最新的gl.h,glu.h库 #include #include // 标准输入/输出库的头文件 #include // GLaux
DirectX11 把纹理作为材质
把纹理作为材质1. 将纹理整合到我们的材质/光照系统?要将纹理整合到我们的材质/光照系统中,通常可以将环境光和漫反射光项调制到纹理颜色上,但不需要包括高光项(这常常被称为“后期添加调制,modulate with late add”)。// Modulate with late add. litColor = texColor*(ambient + diffuse) + spec;上述操作给每个像素
DirectX 9 从内存数据建立纹理Texture的方法
1、创建一个空纹理,指定大小与纹理格式2、把纹理的Rect锁定,并填充数据,最后解锁3、使用该纹理LPDIRECT3DTEXTURE9 m_pTexture; D3DXCreateTexture(m_pd3dDevice, width, height, 1, 0, D3DFMT
OpenGL 学习笔记-2015.4.18——立方体纹理映射-天空盒子-环境映射
立方体映射(cube-map)纹理是一种特殊类型的纹理,用于环境映射,使用一组图像并把他们作为立方体的面。立方体映射的6个面用正方形并且大小相同的6个子纹理表示。要从立方体纹理中采样的时候,使用的纹理坐标是3维,并且被看做来自原点的方向!方向指向用来读取纹理的立方体映射表面的位置。在这里例子中,有关于环境映射的代码,主要思想是通过观察向量和表面的法向量反射来确定采样的纹理坐标。     通过将一
用DirectX绘制使用纹理的立方体
下面将学习DirectX的3D渲染基础部分,但不会对3D数学或图形理论有太详细的介绍。 首先要了解DirectX中的坐标系,要记住的是DirectX采用左手坐标系。 在Direct3D中渲染一个场景,涉及到的三维变换有:世界变换、视图变换、投影变换。 世界变换:三维变换的第一步就是将模型的顶点的局部坐标变换到所有对象都共享的一个坐标系中,也就是从模型空间向世界空间转换。变换到的
DirectX11 纹理坐标
纹理坐标1. 纹理坐标是什么?Direct3D的纹理坐标系由表示图像水平方向的u轴和表示图像垂直方向的v轴组成。坐标(u,v)指定了纹理上的一个元素,我们将该元素称为纹理元素(texel,译者注:texel是texture element的缩写),其中0≤u,v≤1。注意,v轴的正方向是“垂直向下”的(参见图8.2)。另外,将规范化坐标区间设为[0,1],是因为这样可以使 Direct3D拥有一个独
OpenGL纹理贴图 旋转的立方体
由于vs2008没有对glaux的支持,所以该工程需要在vc6.0里面实现,对vc6.0的opengl设置在上一篇博客中源码如下:#include //引用相关包 #include #include #include #pragma comment(lib, "openGL32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux.lib") GLfloat xrot; // X 旋转量 GLf
DirectX纹理渲染原理
DirectX纹理渲染为了使绘制出来的模型具有很强的真实感,需要借助编程接口—DirectX对模型进行纹理贴图,达到还原的真实感。纹理指的是三维物体表面的图案和花纹。纹理贴图是指采用贴图的方法,将一张二维的图像贴到三维物体表面,形成三维物体表面的纹理。纹理和材质一样是物体表面的属性,结合纹理,材质和光照对三维场景进行渲染,可以使渲染的图形更加逼真。1 纹理坐标系实际上,纹理是一个二维数组,它的元素
DirectX学习笔记(三):利用线框模式绘制可旋转的正方体
前言: 一个场景中,任何物体都可以用三角形网格来逼近表示。也就是说,三角形网格是构成物体模型的基本单元。 如图: 利用线框模式绘制可旋转的正方体的具体操作: 1.顶点缓存和索引缓存: 一个多边形中相邻的交汇点称为顶点,描述三角形单元时,我们需要指定该三角形3个顶点的位置。那么如果我们要通过三角形单元来描述一个物体,就需要指定构成该物体的三角形单元。但是
【DirectX11】第六篇 纹理映射
本系列文章主要翻译和参考自《Real-Time 3D Rendering with DirectX and HLSL》一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正。       这里是书中的代码和资源。      纹理映射主要是指将贴图添加到3D模型表面的过程。这有点类似礼物包装,而你的包装纸就是一张2D的贴图。纹理映射是现代实时渲染技术的基础,并且可以用来实现很多