0

我想加一盏灯。但是当我尝试修改位置时,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 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:
4

1 回答 1

3

如果您想使用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);
于 2012-03-16T10:06:54.303 回答