我正在字符串中添加灯光。但当我试图修改位置时,netbeans会突出显示gl.glLightfv方法。它不仅与位置有关,还与漫射和环境有关。。。我做错了什么。。。这是我的密码。
所有点击都说:
找不到适用于glLightfv(int,int,float[])的方法方法javax.media.xinlg.GL.glLightfv(int,int,float[],int)不适用(实际参数列表和正式参数列表的长度不同)方法javax.media.nopeng.GL.glLightfv(int,int,java.nio.FloatBuffer)不适用(实际参数float[]无法通过方法调用转换转换为java.nio.FloatBuffer)
float pos[] = {-2.0f, 2.0f, -3.0f, 1.0f };
gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos); //underlinded red:
float dif[] = {1.0f,1.0f,1.0f,1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, dif); //underlinded red:
float amb[] = {0.2f,0.2f, 0.2f, 1.0f};
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, amb); //underlinded red:
如果你想使用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);