Добавление метода освещения glLightfv не работает - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь добавить свет. но когда я пытаюсь изменить позицию, netbeans выделяет метод gl.glLightfv. не только с позицией, но и с diffuse и ambient ... что я делаю не так ... вот мой код.

все хиты говорят, что:

не найден подходящий метод для 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 Ответ

3 голосов
/ 16 марта 2012

Если вы хотите использовать 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);
...