2012-03-16 6 views
0

私は光を追加するつもりです。しかし、私がnetbeansの位置を変更しようとすると、gl.glLightfvメソッドが強調表示されます。その位置だけでなく、拡散し、周囲も...私は間違っています...ここに私のコードです。照明glLightfvメソッドを追加しようとしていません

すべてのヒットがあると言う:([]フロート、INT、INT)

glLightfvが見つかりません適切な方法 方法javax.media.opengl.GL.glLightfv(INT、INT、フロート[]、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

コンパイラが浮動小数点型配列を好まず、代わりにFloatBufferを必要とするようです。 – user1118321

答えて

3

float array代わりFloatBufferクラスのあなたのパラメータの外観を開始するOpenGLの必要があり、あなたが(配列で)言って1つの以上のパラメータを追加する必要があります - >配列のインデックスオフセット値..

あなたの場合

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); 
関連する問題