Мипмапы JOGL и текстуры, переливающиеся - PullRequest
0 голосов
/ 08 мая 2011

В моей сцене OpenGL 2 есть стена и кирпичная текстура, которая продолжает мерцать и мигать независимо от того, что я установил. Когда я увеличиваю изображение (и могу ясно видеть текстуру), мигание и мерцание прекращаются. Но когда я уменьшаю масштаб и перемещаюсь по сцене, мигание и мерцание очень ярко выражены. Это код текстуры для кирпичной стены:

brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MAG_FILTER,GL2.GL_NEAREST);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MIN_FILTER,GL2.GL_LINEAR);
gl.glGenerateMipmap(GL2.GL_TEXTURE_2D);

brickwall.enable(gl);
brickwall.bind(gl);
//...
brickwall.disable(gl);

Из того, что я гуглил, кажется, что эту проблему решает мипмаппинг. Но мой вопрос, как это сделать? Нужно ли создавать, загружать и задавать параметры для всех видов изображений двух размеров? Кто-нибудь может привести пример загрузки и отображения текстуры JOGL2 с использованием мип-карт, которые не будут мерцать и мерцать при масштабировании и перемещении по сцене?

1 Ответ

2 голосов
/ 08 мая 2011

Вы генерируете цепочку mipmap с помощью glGenerateMipmap, но вы не установили подходящий фильтр MIN:

brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MIN_FILTER,GL2.GL_LINEAR_MIPMAP_LINEAR);

Фильтры * MIPMAP * используют мипмапы, другие фильтры текстуры - нет.

...