Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   3D-альтернатива OpenGL для Java?! (http://forum.oszone.net/showthread.php?t=225861)

Killer_13 21-01-2012 16:03 1841124

3D-альтернатива OpenGL для Java?!
 
Здравствуйте, вопрос - интересует мнение!

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

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

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

ferget 21-01-2012 16:34 1841155

Цитата:

Цитата Killer_13
Банальная причина - припустим я нарисовал шарик, так я не могу его присвоить какой-то переменной чтоб потом манипулировать ей, я не могу управлять этим шариком как объектом, или я не дочитал что-то.. »

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

Killer_13 21-01-2012 18:10 1841238

Брррр, подскажите тогда, я вот.. нарисовал шарик, откуда мне брать метод "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 1841625

Прорисовка шарика - делается в конструкторе класса Шарик. Методы добавляют функционал. MoveLeft может двигать влево и т.п.

Beyound 22-01-2012 11:47 1841653

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

Killer_13 22-01-2012 12:19 1841666

Цитата:

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

:) Понятное дело, я так и делал, но вот хотелось что-то поудобней... Я уже начинаю понимать, что чуток не правильно сформулировал вопрос.

Beyound 22-01-2012 13:33 1841716

)) кудаж удобнее может быть - объектно ориентированное програмирование в самом его соку. в directx все тож самое.

Killer_13 22-01-2012 13:38 1841718

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

El Scorpio 01-02-2012 06:37 1849006

Killer_13, вы смешиваете два совершенно разных понятия: физическую модель и графическую часть программы

XPEHOMETP 01-02-2012 11:12 1849125

Цитата:

Цитата Killer_13
Есть какая-то Не OpenGlная альтернатива? »

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


Время: 15:50.

Время: 15:50.
© OSzone.net 2001-