DominaN  Пользователь
Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| Я щас попробую кратко объяснить. Когда я юзал lwjgl там был единый статический OpenGL контекст, который создавался в момент создания окна. Но окно это было откуда-то из недр библиотеки, поэтому совместить его с AWT/Swing было ну воще никак. Меня это не заботило, пока я не стал делать всяческие тулзы для движка. Тогда я решил перейти на jogl, ибо православный GLCanvas. Но в jogl совсем другая концепция взаимодействия с jni. Там на каждый чих нужно передавать заранее полученный экземпляр объекта GL. То есть вот прямо везде. Соответственно код под это дело изначально выглядел очень весело (хочу нарисовать закрашенный квадрат, но вместо fillrect(int x, int y, int w, int h) мне приходилось передавать еще и ссылку на GL: fillrect(GL gl, int x, int y, int w, int h)). Возопив от сего безобразия, я собрал весь зависимый от GL контент в классе RenderAPI и перевел рендер на упрощенную стейтовую машину, попутно перейдя с glBegin на drawArrays. Но как и любая стейтовая машина эта дрянь весьма зависима от корректности обращения со стороны потока выполнения. Поэтому теперь периодически не прогружаются текстуры и прочая радость. Грусть и тоска. Жаль, что альтернатив похоже нет совсем. Придется доводить до ума. Но постоянные NullPointer и Access Violation порядком задолбали.
|