【发布时间】:2020-10-08 01:01:03
【问题描述】:
所以我的问题与标题所述完全一样。我不是在寻找具体的代码示例,只是关于任何首选方法的一些想法/指南。
在我的 2D 游戏引擎中,我喜欢有一个表示一定数量像素(例如 32x32 像素)的网格。我特别希望能够定义世界空间中每个网格的宽度和高度,在所有线条上具有一致的笔划宽度,并且能够根据相机缩放调整图块大小。
我过去尝试过几种不同的方法来绘制这个网格:
我尝试的第一件事是使用自定义着色器来绘制网格。我在网上找到了一些代码,这些代码使用了一些我不理解的概念,只是在 2D 平面上绘制网格。这种方法的问题是我不知道如何在我的游戏世界中控制确切的大小,也不了解它是如何工作的。
我的第二种方法是使用我的调试绘图工具。我编写了一套函数,允许我在世界空间中添加不同笔划宽度的线条,我通过为每一帧的每一行动态生成四边形来实现这一点。然后我可以画一堆线,给我一个网格。
我的第三种方法是绘制一堆四边形,并使用自定义着色器为它们提供轮廓。然后我只画了一堆带有黑色轮廓的白色四边形,呈现出网格的外观。
有人有更好的解决方案吗?在我所有的方法中,我也从未尝试过根据相机的缩放级别动态调整网格。因此,对于这些方法是否是典型解决方案或是否有更好的解决方案的任何想法将不胜感激。另外,如果您对如何将这些方法扩展到 3D 空间有任何想法,这也不错,我似乎找不到在世界空间中绘制的线条上获得统一笔触宽度的好方法。
我的引擎目前也在使用 Opengl 和 C++ 进行编码,所以我主要关心如何使用现代 opengl 来实现这一点,而不是立即模式。
编辑: 我主要关心渲染技术。你使用几个四边形吗?一个平面和一个复杂的着色器?或者你对每条线使用一个四边形?还是完全不同的东西?
【问题讨论】:
标签: c++ opengl graphics 2d gridlines