【问题标题】:Finding which side of a cube is in the center of the screen?找到立方体的哪一侧在屏幕的中心?
【发布时间】:2012-12-13 23:18:23
【问题描述】:

我正在尝试通过制作我的世界克隆来学习 OpenGL 和 LWJGL,但我被卡住了

我能够轻松地渲染块并拥有一个带 wasd 控件的第一人称相机,现在我正在尝试能够放置块,但我不知道如何才能检查哪个立方体和哪一侧我正在看的那个立方体/在屏幕的中心,所以我可以把另一个立方体放在那个立方体旁边。

我使用 gluPerspective 作为 3d 透视图,使用 glRotatef 旋转世界,很正常的东西

【问题讨论】:

    标签: java opengl lwjgl minecraft


    【解决方案1】:

    一种技术是使用 id-buffer。您可以使用帧缓冲区一次将场景绘制到两个纹理。第一个纹理将是典型的颜色纹理。第二个是存储整数的纹理。在绘制场景之前,为每个立方体面分配一个编号。您将这些数字传递给着色器(统一变量适用于此)。片段着色器会将这些数字“绘制”到整数纹理,同时对颜色纹理进行正常着色。当您需要查找鼠标光标处的内容时,请使用glReadPixels()

    这一切都假设您使用的是现代 OpenGL(3 或更高版本)。如果你被固定功能管道卡住了(跛脚),你还可以为每个立方体面分配一个唯一的颜色,并用纯色绘制到后台缓冲区。确保关闭纹理等。完成后,使用glReadPixels() 查找鼠标光标处绘制的内容。然后你再次正常绘制并交换缓冲区。 (这里有一些过时的代码显示了我在说什么:http://www.lighthouse3d.com/opengl/picking/index.php3?color1

    另一种技术是通过屏幕“投射光线”。基本上,您针对几何图形中的每个形状测试几个方程,如果这些测试通过,您就有了一个交集,并且您知道单击了哪个形状。我对这种方法不是很有经验,所以如果他们愿意,我会留给其他人解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2015-03-17
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多