2013-02-18 4 views
-1

Я довольно новичок в JOGL, и я пытался заставить все мои текстуры отключить сглаживание. хотя по какой-то причине он работает только на текстуре буквы «S».прекращение сглаживания текстур в JOGL

здесь все мои классы:

Главная: pastebin.com/qxCJKbbE

номер: pastebin.com/mKFSgqBp

MainMenu: pastebin.com/tihb3wAX

RenderHelper: pastebin.com/qfzXqCQY

i.imgur.com/qMRyG0j.png

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

+1

Не ожидайте, что люди пройдут через всю вашу кодовую базу и выясняют, что происходит; изолировать проблему и опубликовать выбранные фрагменты кода. – Torious

+0

Я пробовал буквально все, что могу найти. ничего не работает. проблема, очевидно, что-то в текстуре, потому что она применяется только к этой текстуре. хотя ничто не отличается от этой текстуры во всем коде. я просто спрашиваю, есть ли какой-то особый способ сделать это, чтобы я отсутствовал. и именно так вы знаете, мой код на самом деле не такой большой. у меня просто есть настоящий игровой цикл, который вызывает рендер, который перенаправляется в текущую комнату и визуализирует. из комнаты вы можете увидеть кусочки рисования класса renderhelper. я бы понял, был ли мой код более сложным. – Marcus13345

ответ

0

glTexParameterf влияет только на текстуру, которая в настоящее время связана. Вы должны установить неизменяемые параметры текстуры для каждой текстуры во время загрузки/установки.

Для этой цели можно также использовать удобные методы Texture класса, например:

C = render.getTexture("E:\\MAndWorks\\resources\\font\\C.png"); 
C.setTexParameterf(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST); 
// (note that this also binds the texture behind the scenes) 

Причина, по которой работал на букву «S» является то, что это последняя текстура вы предоставляете в вашем render, поэтому он по-прежнему связан, когда вы устанавливаете параметр текстуры при следующем вызове display, эффективно устанавливая параметр для текстуры «S».

Удачи.

+0

Большое вам спасибо! это, должно быть, трюк, который мне не хватало! у меня создалось впечатление, что этот бит кода нужен только в вызове init (GLAutoDrawable). Я попробую прямо сейчас! – Marcus13345

+0

Итак, я вижу, что вы говорите, имея не изменяющиеся параметры, хотя если я попытаюсь просто добавить 'C.setTexParameterf (GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST);' после установки 'C', это дает мне ошибку, потому что такой метод не существует. edit: оказывается, что для этого метода нужен другой параметр, объект GL2. для этого я добавил параметр GL2 в конструктор MainMenu, который перешел в 'setTexParameterf (GL2, int, float);' – Marcus13345

Смежные вопросы