如何在 Direct3D 中构建纹理坐标变换矩阵
我知道 D3D 中有一个函数可以转换纹理坐标:
d3dDevice->SetTransform( D3DTS_TEXTURE0, &matrix );
问题是我如何获得矩阵。例如,我现在有纹理偏移、缩放、旋转和亮度。我应该如何设置该矩阵?
I know there is a function in D3D that transforms the texture coordinate:
d3dDevice->SetTransform( D3DTS_TEXTURE0, &matrix );
The problem is how I could get the matrix. For example, I now have texture offset, scale, rotation, and brightness. How should I set that matrix?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
转换。该页面上有指向 D3DX 实用程序库方法的链接。
Transforms. There are links to the D3DX Utility Library methods on that page.
让我们假设您在宽度 (txFullWidth) 和高度 (txFullHeight) 的纹理图中拥有相同宽度 (txTxWidth) 和高度 (txTxHight) 的图像集合。
步骤 1:构建一个 4x4 比例矩阵,其大小等于纹理图中的图像单元。
步骤 2:使用 (x,y) 偏移量以及图像单元宽度和高度构建 4x4 平移矩阵
步骤:4:不要忘记转置平移矩阵
步骤 3:根据您的要求构建 4x4 旋转矩阵。
步骤 4:乘法
步骤 5:设置纹理变换
步骤 6:设置纹理阶段 0
希望这能解决您的问题。享受 !!!
Let us consider you have collection of images of same width(txTxWidth) and height(txTxHight) in a texture atlas of width (txFullWidth) and height(txFullHeight).
step 1: Build a 4x4 scale matrix of size equal to an image cell in a texture atlas.
step 2: Build a 4x4 translation matrix using the (x,y) offset and the image cell width and height
step: 4: Don't forgot to transpose the translation matrix
step 3: Build a 4x4 rotation matrix according to your requirement.
step 4: Multiplication
step 5: Set the Texture Transform
step 6: Set the Texture Stage 0
Hope this will solve your propblem. Enjoy !!!