好的。我是OpenGL和类似事物的新手。我正在使用LWJGL 3和JOGL(用于GLU),并且在我的自学过程中已经完全停止。现在,我正在尝试使用GLU.gluPerspective(80, 4/3, 0.1, 10000);设置3D投影,但是它给了我Cannot make a static reference to the non-static method gluPerspective(double, double, double, double) from the type GLU-我确实知道这意味着什么,但是我不确定为什么要得到它。

我从LWJGL 3的页面复制/粘贴了示例代码,以获取大部分代码。为了绘制立方体,我使用在网上找到的另一段代码。

该代码相当长,因此您可以获取它at this pastebin link.

上面的注释,第158行至第174行使用了我的自定义Player类和Keyboard类,它们很小,没有任何影响我在其中出现错误的操作。

那么,尽管我实例化了一个新的Main(),为什么这会给我这个错误呢?我对Java的记忆有点生锈吗? (pastebin代码为Main.java

最佳答案

如错误消息gluPerspective中所述,它不是类GLU的静态方法,这意味着您需要一个GLU对象来调用它:

GLU glu = new GLU();
glu.gluPerspective(80, 4/3, 0.1, 10000);


JOGL user guide中也对此进行了说明:


要使用GLU,只需在新窗口中通过new GLU()实例化一个GLU对象。
程序的开始。 GLU对象上的方法可以称为
在当前的OpenGL上下文中的任何时候。因为GLU
实现不是线程安全的,应创建一个GLU对象
对于每个GLEventListener或其他执行OpenGL渲染的实体
在给定的线程中。

10-08 19:32