我想补充一点光。但是当我尝试修改位置时,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:
答案 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);