PDA

Показать полную графическую версию : 3D-альтернатива OpenGL для Java?!


Killer_13
21-01-2012, 16:03
Здравствуйте, вопрос - интересует мнение!

Хочу попрактиковаться в Java программировании, решил написать шахматы(с возможностью сетевой игры), сразу скажу, что только друг против друга, сейчас нету столько времени, чтоб пробовать разобраться в алгоритмах игры против компьютера, да и это не так то просто я думаю. :)
Сначала я задумал, что это будут 3Д Шахматы. Начал копать - что же предлагает Java. Так вот, из нарытого.
Java3D - смесь опенДж и плюсов (как я понял).
JOGL - только закончил змейку на нем писать, что-то нету больше охоты возвращаться к OpenGL возвращаться. Банальная причина - припустим я нарисовал шарик, так я не могу его присвоить какой-то переменной чтоб потом манипулировать ей, я не могу управлять этим шариком как объектом, или я не дочитал что-то.. :)
JMonkey - фреймворк основан тоже на OpenGL.
Есть какая-то Не OpenGlная альтернатива?

Подумал может что в Браузере замутить. И тут то-же самое
WebGL - тоже базируется на OpenGL но это уже в сторону JavaScript
В сторону Апплетов тоже не хочется двигаться..

Или не забивать себе мозги изучением всяких 3Д(не хочу развиваться в этом направлении) технологий, а для начала замутить На Swing обычное 2D?
Каково ваше мнение? Что говорит опыт профессионалов?
Спасибо!!!

ferget
21-01-2012, 16:34
Банальная причина - припустим я нарисовал шарик, так я не могу его присвоить какой-то переменной чтоб потом манипулировать ей, я не могу управлять этим шариком как объектом, или я не дочитал что-то.. »

вообще-то вы действительно что-то не дочитали, у вас должен был получится объект шарик и для его передвижения у него должен быть метод, например шарик.move(), разберитесь с ООП

Killer_13
21-01-2012, 18:10
Брррр, подскажите тогда, я вот.. нарисовал шарик, откуда мне брать метод "move()"?

gl.glPushMatrix();
gl.glTranslatef(applePositionFloatX, applePositionFloatY, 0.0f);
gl.glColor3f(0.0f, 1.0f, 0.0f);
glu.gluSphere(glu.gluNewQuadric(), 0.023, 50, 50);
gl.glPopMatrix();

Delirium
22-01-2012, 10:46
Прорисовка шарика - делается в конструкторе класса Шарик. Методы добавляют функционал. MoveLeft может двигать влево и т.п.

Beyound
22-01-2012, 11:47
все верно - твой шарик будет двигаться если для каждого прерывания перерисовки ты будешь выбирать верные applePositionFloatX и applePositionFloatY. скажем, добавь функцию на прерывание с клавы, если нажата кнопка вверх то applePositionFloatY++ и т.д. (я незнаю как ты там оси координат назначал). естественно applePositionFloatY должна быть глобально объявлена. как сказал Delirium проще всего создавать классы, в их теле иметь функции их прорисовки и изменения, а в теле основной функции перерисовки сцены ток писать логику.

Killer_13
22-01-2012, 12:19
все верно - твой шарик будет двигаться если для каждого прерывания перерисовки ты будешь выбирать верные applePositionFloatX и applePositionFloatY. скажем, добавь функцию на прерывание с клавы, если нажата кнопка вверх то applePositionFloatY++ и т.д. (я незнаю как ты там оси координат назначал). естественно applePositionFloatY должна быть глобально объявлена. как сказал Delirium проще всего создавать классы, в их теле иметь функции их прорисовки и изменения, а в теле основной функции перерисовки сцены ток писать логику. »
:) Понятное дело, я так и делал, но вот хотелось что-то поудобней... Я уже начинаю понимать, что чуток не правильно сформулировал вопрос.

Beyound
22-01-2012, 13:33
)) кудаж удобнее может быть - объектно ориентированное програмирование в самом его соку. в directx все тож самое.

Killer_13
22-01-2012, 13:38
Я наверное что-то не дочитал... И поспешил...
Так вы говорите, что можно например создать отдельный класс Шарик, прописать в нем методы для движения, трансформации и так д... а потом просто создавать объект и вызывать методы?
а потом все конфигурировать в нашей функции отрисовки display()?

El Scorpio
01-02-2012, 06:37
Killer_13, вы смешиваете два совершенно разных понятия: физическую модель и графическую часть программы

XPEHOMETP
01-02-2012, 11:12
Есть какая-то Не OpenGlная альтернатива? »
А чего Вы хотите конкретно? Вместо OpenGl? DirectX? Это чисто виндовая примочка. Поэтому Java, имея принципиально кросс-платформенный подход, будет стоять именно на кросс-платформенном OpenGl. Альтернатив (кросс-платформенных) пока что нету. Если и появятся, то будут сидеть на том же OpenGl как на основе, т.е. будут, по сути дела, паразитами.




© OSzone.net 2001-2012