gpt4 book ai didi

opengl - 查看玩家正在看什么 "block"

转载 作者:行者123 更新时间:2023-12-02 02:22:13 24 4
gpt4 key购买 nike

我正在创建一款游戏,其中的世界是由立方体组成的(就像在《我的世界》中一样),但有一个小问题我无法解决。我创建了世界、玩家、相机移动和旋转(glRotatef 和 glTranslatef)。现在我一直在寻找玩家正在看什么方 block 。

编辑:如果我的问题不够清楚,我不明白如何转换光线来检查与 block 的碰撞。我正在绘制的所有 block 都存储在 3D 数组中,其中包含 block id(我知道我需要使用八叉树,但我只是想让算法起作用,优化随之而来)

最佳答案

OpenGL 是一个绘图/渲染 API,而不是某种游戏/图形引擎。你告诉它画东西,它就会这么做。

OpenGL 不包含您想要的测试,您必须自己实现它们或使用为此设计的一些库。就您而言,您想根据视锥体测试世界。玩家所看到的确切方 block 可以通过进行射线几何相交测试来找到,即,您从玩家位置向玩家所看的方向转换一条射线,并测试哪些对象与该射线相交。使用空间分割结构有助于加快速度。在由立方体组成的世界中,最简单、最有效的结构是八叉树,即一个大立方体被分割为 8 个子立方体,子立方体的边长是包含立方体边长的一半。然后这些子立方体被划分等等。

通过递归函数可以轻松实现遍历这样的结构 - 不用担心堆栈溢出,因为只要 10 个分割就可以产生 2^10^3 = 2^30 sub-sub-...-sub-立方体,需要至少 8GB 的​​数据才能从中构建完整的详细网格。但10个函数递归层数并不是很深。

关于opengl - 查看玩家正在看什么 "block",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969068/

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