0

ライトを追加しようとしています。しかし、位置を変更しようとすると、netbeans は gl.glLightfv メソッドを強調表示します。その位置だけでなく、拡散とアンビエントも...私が間違っていることは...ここに私のコードがあります。

すべてのヒットは次のように言っています。

glLightfv(int,int,float[]) メソッドに適したメソッドが見つかりません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は、もう 1 つのパラメーターを追加する必要があります。これは、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 に答える