0

我目前拥有的:在给定矩形的宽度和高度以及纹理的比例因子的情况下生成纹理坐标。这很好:

vertices = new float[] {
                    0,          0,              0, this.height / (this.texture.height * this.texScaleHeight),
                    this.width, 0,              this.width / (this.texture.width * this.texScaleWidth), height / (this.texture.height * this.texScaleHeight),
                    this.width, this.height,    this.width / (this.texture.width * this.texScaleWidth), 0,
                    0,          this.height,    0, 0 };

我现在想要做的是,一些具有不同位置(即彼此相邻)的矩形具有无缝的纹理渐变。我尝试了以下但没有好的结果。

vertices = new float[] {
                    0,          0,              -this.getPosition().x * this.texScaleWidth, this.height / (this.texture.height * this.texScaleHeight) -this.getPosition().y * this.texScaleHeight,
                    this.width, 0,              this.width / (this.texture.width * this.texScaleWidth) -this.getPosition().x * this.texScaleWidth, height / (this.texture.height * this.texScaleHeight)-this.getPosition().y * this.texScaleHeight,
                    this.width, this.height,    this.width / (this.texture.width * this.texScaleWidth) -this.getPosition().x * this.texScaleWidth, -this.getPosition().y * this.texScaleHeight,
                    0,          this.height,    -this.getPosition().x * this.texScaleWidth, -this.getPosition().y * this.texScaleHeight };

我怎样才能实现纹理“与世界对齐”而不是它们所在的矩形?

4

1 回答 1

0

这种技术可能过于笼统,但在这里:您可以将纹理坐标投影到几何体上

整个工作流程与处理几何本身相同,但在这里,所有世界点都分配了纹理坐标。将几何中的每个点推入另一个 MVP 矩阵(代表投影仪)并获取该(x, y)点的纹理坐标的结果(假设正交投影);透视需要w事后除。

我希望你能明白。搜索它,我找不到像样的描述或教程。阴影映射使用相同的技术,但它的目标是确定一个点是否有阴影;在这里,目标是找到通用投影仪的纹理坐标。

于 2012-04-09T05:39:39.440 回答