gpt4 book ai didi

java - OpenGL 侧面剔除

转载 作者:行者123 更新时间:2023-11-30 05:02:19 24 4
gpt4 key购买 nike

我正在绘制一系列彼此相邻的立方体,并且我想剔除所有接触的边,因为它们是无用的。问题是我不知道如何剔除侧面。有人可以解释如何剔除通过 glBegin()/glEnd() 调用调用的立方体的任何面吗?

最佳答案

OpenGL 不会为您执行此操作,您必须自己剔除它们。

我在最近的项目中执行了以下操作:

从立方体位置的集合中,我将每个面的条目添加到字典中。这将面中心位置映射到面法线。在添加新的(位置,正常)对之前,我会测试该位置是否存在。如果找到:删除现有条目并扔掉新条目。否则添加新的(位置,正常)。

通过这本字典,您可以构建顶点和三角形列表,并且不会有任何接触面。

可能有更有效的方法来做到这一点,但这对于我的应用程序来说已经足够好了,并且易于实现。

编辑:

PSEUDOCODE:

d = dictionary<vec3, vec3>

for each cube:
for face 1..6:
pos = faceCenterFor(cube, face)
if pos in d:
remove d[pos]
else:
d[pos] = normalFor(cube, face)

for each (pos, normal) in d:
draw(vertsForFace(pos, normal))
# or save verts to an array for drawing later

关于java - OpenGL 侧面剔除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com