在2D,z顺序渲染系统中组合点(粒子)和三角形(子图形)

从Abob

我目前有一个2D,基于图块的渲染系统,该系统使用纹理图集绘制纹理四边形(简单的精灵)。像这样的系统中常见的那样,四边形是z顺序的,因此,一个高大的实体将在场景中较高位置的实体(例如,走在树后的角色)的顶部渲染。一旦实体排序并计算了顶点,我将使用glDrawArrays在一个绘制调用中绘制所有内容:

glDrawArrays(GL_TRIANGLES, 0, buffer_size);

现在,我正在尝试实现一个粒子系统,该系统将使用另一个绘制调用(这次使用GL_POINTS)来渲染粒子。我想知道如何以一种可以遵循我的精灵Z轴顺序的方式渲染粒子,即使这些精灵和粒子具有单独的绘制调用。例如,如果角色站在树后面并散发血液颗粒,我希望这些血液颗粒也可以在树后面渲染。

我想出的唯一可能的方法是完全分解我的精灵的渲染,并分别渲染每个精灵,以便可以按照正确的z顺序将粒子与它们一起绘制。这将大大增加绘图调用的次数,所以我想知道是否有我不知道的更好的方法。

作为附录:对于非常简单的2D应用程序,我知道画图调用不是一个大问题,但是此特定程序将使用相当多的着色器效果和一些CPU密集型计算,因此我确实需要尽可能地提高性能。

sn710

您可以直接使用深度缓冲区,而不必对可绘制对象进行深度排序。仅写入深度缓冲区是不够的,您还需要启用深度测试。您可以参考此https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在2D,z顺序渲染系统中组合点(粒子)和三角形(子图形)

来自分类Dev

循环寻找2D三角形中的点

来自分类Dev

C ++ 2D图形:平底三角形栅格化

来自分类Dev

获取2D三角形中的点数

来自分类Dev

如何在Unity 5中绘制2D三角形?

来自分类Dev

获取2D三角形中的点数

来自分类Dev

将NumPy 2D阵列中的所有2D点连接为三角形网格

来自分类Dev

将2D三角形上的点投影回3D?

来自分类Dev

遍历单位三角形中的点

来自分类Dev

遍历单位三角形中的点

来自分类Dev

快速检查矩形是否在三角形内的方法(2D)

来自分类Dev

旋转2D三角形乘积奇数结果

来自分类Dev

更改D3中三角形的高度和方向

来自分类Dev

三角形CSS中的三角形

来自分类Dev

OpenGL不渲染三角形

来自分类Dev

OpenGL GLFW,三角形不渲染

来自分类Dev

OpenGL三角形未渲染

来自分类Dev

三角形无法正确渲染

来自分类Dev

用OpenGL渲染意外的三角形

来自分类Dev

绘制f(x,y)= z = min(x,y)会创建2D三角形而不是3D曲面

来自分类Dev

三角形网格上的最近点

来自分类Dev

以3D形式显示点,线和三角形(C ++ API和文件格式)

来自分类Dev

以3D形式显示点,线和三角形(C ++ API和文件格式)

来自分类Dev

在我的JPanel东面的BorderLayout中显示图形三角形以显示问题

来自分类Dev

在我的JPanel东面的BorderLayout中显示图形三角形以显示问题

来自分类Dev

三角形失败时,JsPlumb连接器线和锚点

来自分类Dev

无法在OpenGL C ++中渲染三角形

来自分类Dev

无法在OpenGL C ++中渲染三角形

来自分类Dev

尝试在DirectX11中渲染三角形后Windows冻结