【问题标题】:adding a lighting glLightfv method is not working添加照明 glLightfv 方法不起作用
【发布时间】:2012-03-16 03:47:13
【问题描述】:

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

【问题讨论】:

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

标签: java opengl jogl lighting ambient


【解决方案1】:

如果您想使用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);

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多