【问题标题】:Is it possible to map a texture to quads similar to OpenGL with just Graphics?是否可以仅使用图形将纹理映射到类似于 OpenGL 的四边形?
【发布时间】:2016-05-26 05:34:20
【问题描述】:

我正在创建一个天际线游戏作为一个有趣的辅助项目,我在为建筑物的墙壁设置纹理时遇到了麻烦,我目前只是在该区域绘制一个多边形,但我想知道是否有一种方法可以对它进行纹理处理,这样的纹理:

可以这样渲染:

这是游戏的图片,我想要纹理的部分是建筑物的灰色墙壁。

我知道我可以通过创建一个单独的渲染系统来逐个像素地绘制它,但我试图避免这种情况。

我的具体问题是 Java 的 Graphics 中是否存在方法或类似的方法可以完成此操作。

【问题讨论】:

  • 也许AffineTransform 是你需要的?
  • @msandiford 看起来很有希望,但我认为它没有纹理功能
  • 您用插图描述的内容可以使用 AffineTransform(它支持纹理),但屏幕截图显示的是透视投影,仿射变换不支持。
  • @msell 我没有使用任何投影,严格来说是 2.5D,建筑物的每个面都是一个正在渲染的单独多边形,请您指导我到一个链接,解释如何使用 AffineTransform 进行纹理处理,我以前从未使用过它。谢谢!
  • 我认为有很多方法可以使用它,但也许最直接的方法是使用Graphics2D#drawImage(...)。如果不看一些代码,很难知道最好的方法是什么。

标签: java graphics 2.5d


【解决方案1】:

如果您想执行剪切变换,AffineTransformation 是您的解决方案。

AffineTransform at;

double shx, shy;
at.shear(shx, shy);

在绘制图像时使用 AffineTransformation - 遗憾的是,您必须为此目的使用 Graphics2D 并不是很明显

@Override
public void paintComponent(Graphics g){
    Graphics2D g2d = (Graphics2D)g;
    BufferedImage img = ...;
    AffineTransform at = ...;
    g2d.drawImage(img, at, null);//null-param is the ImageObserver
    ....
}

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多