假设我有一个纹理,它是一个单独的20px*20px块的文件。在这些块中的每一个都是一个新字符,我想使用这些块在屏幕上渲染不同的字符作为纹理。如何使用directx渲染纹理文件的不同部分?
发布于 2009-12-04 02:49:49
对于要渲染的每个字母,需要渲染一个四边形(两个三角形),并将UV坐标映射到该纹理中的正确位置。
所以如果你有一个像这样的四边形:
|\ |
| \|并且您希望绘制指定顶点UV坐标的整个纹理:
TopLeft: 0,0
TopRight: 1,0
BottomLeft: 0,1
BottomRight: 1,1如果要将字母位置为40,60,宽度和高度为20,纹理宽度和高度为200的字母指定给该四边形,则UV坐标将为:
TopLeft: 40/200,60/200
TopRight: TopLeft.x + 20/200, TopLeft.y
BottomLeft: TopLeft.x, TopLeft.y + 20/200
BottomRight: TopRight.x, BottomLeft.y发布于 2009-12-04 02:05:58
纹理坐标已规格化,因此纹理的左上角为(0,0),右下角为(1,1)。找出代表字体纹理中每个字形的边界框的纹理坐标。如果要将某个字形渲染到四边形上,请将该四边形的每个顶点的UV(纹理坐标)设置为要渲染的字形的纹理坐标。这是很难解释没有图片,所以如果你需要更多的信息,谷歌“纹理映射”。
发布于 2009-12-04 01:56:25
绘制2tris(即一个四边形)与UV,只围绕你想要的角色。
https://stackoverflow.com/questions/1841689
复制相似问题