我如何在openGL中获取x,y和z的值,是否有任何get函数可以做到这一点? 我做了很多glTranslatef命令,现在我想要窗口中某个坐标的x,y值。
我有一个项目(迷宫游戏),我想阻止主角穿过迷宫的墙壁。我们的想法是通过在迷宫中建立所有有效位置的矩阵来引导角色走向特定路径。
我试图给墙壁一个物理属性来拥有一个刚体,openGL帮助中有任何已知的库吗?
答案 0 :(得分:0)
据我所知,没有办法从OpenGL中获取这些值。 但是你有两种可能性:
您可以实施一些光线投射来获得位置
你可以使用初始值(xyz)(我猜你的porgram中的某个点你可以访问它们,并自己跟踪位置.glTranslatef,glRotatef,glScalef基本上是矩阵乘法如果你像GPU那样对CPU上的顶点应用相同的数学运算,你应该在3D中获得相同的位置。根据你的模型和你想要的结果,这是非常昂贵的......
< / LI> 醇>对于您的问题,您可以使用3D中的任何物理引擎,或者您可以实现自己的lib。对于初学者,我会说你可以创建轴对齐边界框(AABB)或仅创建定向边界框(OBB)并创建角色的边界框。使用方法2跟踪CPU上的边界框并不是非常昂贵。 您只需要测试播放器的BoundingBox与每个墙壁上的BoundingBox的交集。这里的瓶颈就是你拥有的墙壁数量。墙壁越多,测试所需的时间就越多,但是你可以使用八叉树来加快速度,只测试与玩家在同一子空间中的墙壁。
http://en.wikipedia.org/wiki/Minimum_bounding_box http://www.euclideanspace.com/threed/animation/collisiondetect/