添加照明glLightfv方法不起作用

时间:2012-03-16 03:47:13

标签: 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,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:

1 个答案:

答案 0 :(得分: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);