画布快速纹理映射

5
我正在制作一个简单的3D图形顶视游戏(如果能像GTA 2就好了),我已经实现了在这里找到的仿射纹理映射,但它太消耗CPU资源了。
所以我的问题是:有更好的解决方案吗?我不太懂WebGL,但硬件加速的纹理映射会比这个好吗?我需要一个函数,可以将纹理映射到四边形上。
你可以在这里试玩我的游戏(按下J查看线框图,KL改善帧率或质量)。正如你所见,它确实需要一些优化。 :-)

很好的开端。任何让我想起原始GTA的东西都值得点赞。 - davin
快速问题:您演示中的画布,是2D上下文还是3D? - cherouvim
我知道这个话题有些跑题,但你选择2D上下文而不是3D上下文的原因是什么? - cherouvim
但是如果你知道答案(但是对于3D上下文),制作更多层的画布并不难。因此,使用2D上下文并不是问题,不是吗? - Kuka
链接已损坏... - Calmarius
显示剩余3条评论
1个回答

2

首先,这个演示非常棒!为此向你致敬。

对于像这样的用途,WebGL绝对会给你更好的性能,考虑到你需要的只是一些有纹理的立方体,我认为这对你来说不会太困难。是的,与2D画布工作相比,3D具有更多的学习曲线,但考虑到你已经在模拟3D方面做了很多数学计算,你可能会发现“真正”的3D更容易!

一个很好的起点是LearningWebGL.com上的课程。他们将带领你完成基础知识,并且你想要的纹理映射只需要5节课。

当然,你也可以通过纯CSS获得你想要的效果!有一个非常酷的演示展示了有人实际上正在使用它构建城市场景,因此这肯定是可行的。不过这似乎有些牵强,从功能的角度来看,你可能会从直接使用WebGL中受益更多。


说实话,我对这种回答感到害怕。我花了很多时间在我的“引擎”上工作,不想把所有的努力都白费。实际上,我正在寻找一些简单的函数,可以解决所有问题并绘制转换后的纹理。也许,我会尝试学习WebGL,但还有很多其他问题要解决 - 例如物品、技能、NPC和故事。所以我不能只专注于这个问题... - Kuka
3
在您的问题中,您似乎非常关注性能,因此无疑WebGL是一个不错的选择。如果您正在寻找更容易集成到您的代码中的解决方案,或者需要更高的兼容性,则情况会有所不同。我强烈建议您查看Marius Gundersen在2D画布中实现3D效果的工作。他最近在一个会议上做了一次精彩的演讲,研究一些他的技术可能会对您有所帮助:http://projects.mariusgundersen.net/OnGameStart/ - Toji
那个演示非常棒!谢谢! 我问了这个问题,因为我正在寻找一些能够在四边形上绘制纹理的函数。我有那个函数,但它太慢了,我需要找到更好的解决方案。WebGL很好,但我只有16岁,我不太理解它。(我已经阅读了教程,但没有什么帮助:( ) 如果你理解webgl,是否可能制作一个只需在四边形上映射纹理的函数? 如果可能的话,你介意分享一下吗? - Kuka
哈哈,我希望我能记得那些算法。几年前,我做了一个简单的软件光栅化器(可能是在13/14岁时),我记得我读了很多有关透视纹理映射技术的文章,但现在我一点也不记得了。重点是,像OpenGL和DirectX这样的加速API会将这些东西隐藏起来,通常情况下生活会更美好。快速搜索“透视纹理映射”可能会让你找到正确的方向。我很快就找到了这个人:http://www.lysator.liu.se/~mikaelk/doc/perspectivetexture/ - Toji
我接受了这个答案,因为我在寻找一些WebGL教程时发现了Three.js。我决定使用它,现在它就像一个全新的游戏。(第一人称视角,对不起GTA1的粉丝) - Kuka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接