Java 添加照明glLightfv方法无效

Java 添加照明glLightfv方法无效,java,opengl,jogl,lighting,ambient,Java,Opengl,Jogl,Lighting,Ambient,我正试着加一盏灯。但当我尝试修改位置时,netbeans会突出显示gl.glLightfv方法。它不仅与位置有关,还与漫反射和环境光有关。。。我做错了什么。。。这是我的密码 所有的热门歌曲都说: 找不到适用于glLightfv的方法(int、int、float[]) 方法javax.media.opengl.GL.glLightfv(int,int,float[],int)不适用 (实际参数列表和正式参数列表长度不同) 方法javax.media.opengl.GL.glLightfv(int,

我正试着加一盏灯。但当我尝试修改位置时,netbeans会突出显示gl.glLightfv方法。它不仅与位置有关,还与漫反射和环境光有关。。。我做错了什么。。。这是我的密码

所有的热门歌曲都说:

找不到适用于glLightfv的方法(int、int、float[]) 方法javax.media.opengl.GL.glLightfv(int,int,float[],int)不适用 (实际参数列表和正式参数列表长度不同) 方法javax.media.opengl.GL.glLightfv(int,int,java.nio.FloatBuffer)不适用 (实际参数float[]无法通过方法调用转换转换为java.nio.FloatBuffer)


如果您想使用
float array
而不是
FloatBuffer
类,则必须再添加一个参数,该参数表示OpenGL应该从何处开始查找参数->数组索引偏移值

就你而言

float pos[] = {-2.0f, 2.0f, -3.0f, 1.0f };
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0);
float dif[] = {1.0f,1.0f,1.0f,1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, dif, 0);
float amb[] = {0.2f,0.2f, 0.2f, 1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, amb, 0);

如果您想使用
float array
而不是
FloatBuffer
类,则必须再添加一个参数,该参数表示OpenGL应该从何处开始查找参数->数组索引偏移值

就你而言

float pos[] = {-2.0f, 2.0f, -3.0f, 1.0f };
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos, 0);
float dif[] = {1.0f,1.0f,1.0f,1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, dif, 0);
float amb[] = {0.2f,0.2f, 0.2f, 1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, amb, 0);

看起来编译器不喜欢浮点数组,而是需要一个FloatBuffer。看起来编译器不喜欢浮点数组,而是需要一个FloatBuffer。