Xtreme3D для C++

Вы просматриваете архив старого форума. Новый форум по ссылке


Автор Сообщение

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 13:09
На днях добился определенных успехов в привязке функций X3D к C++. Производительность радует (на глаз - процентов на 20 выше, чем в GM, причем с 50% нагрузкой на CPU и пятикратным снижением потребления памяти). Использую среду Dev-C++ c компилятором Mingw.

В связи с этим встает вопрос: какова реальная востребованность такой разработки? Насколько я знаю, версии GLScene для C++ не существует (хотя были слухи), поэтому X3D для C++ может стать полезной вещью. Планирует ли кто-нибудь изучать С++ и потенциально перейти на него в будущем?

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 13:53
На днях добился определенных успехов в привязке функций X3D к C++. Производительность радует (на глаз - процентов на 20 выше, чем в GM, причем с 50% нагрузкой на CPU и пятикратным снижением потребления памяти)

Я думаю этого и следовало ожидать.
В связи с этим встает вопрос: какова реальная востребованность такой разработки? Насколько я знаю, версии GLScene для C++ не существует (хотя были слухи), поэтому X3D для C++ может стать полезной вещью. Планирует ли кто-нибудь изучать С++ и потенциально перейти на него в будущем?

Лично я программирую в свое удовольствие, хобби вобщем. И я настроен делать игры или примеры игр для людей и для себя. Поэтому если я буду что-то делать, то выберу либо Panda+питон, Basic+что нибудь, GLscene+Delphi и т.д Но изучать громоздкий C++ или jаvа нет желания, да и времени. Поэтому, лично я не собираюсь переходить, ведь даже профессия моя будет совсем не связанная с программированием.
А вообще, возможно в портировании есть перспектива, только вдруг GLscene все же появится позже и на C++? Тогда и смысл разработки уйдет в небытие...
Вообщем, ваш вопрос надо задавать широкой публике! Тогда и получите более ли менее точный ответ...

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 14:46
изучать громоздкий C++ или jаvа нет желания, да и времени.

Я бы не сказал, что он громоздкий... ну да ладно, спорить не буду. Причина, по которой лично я выбрал C++ - это огромное количество документации и исходников, повсеместная поддержка и многолетний опыт профессиональных программистов.

А вообще, возможно в портировании есть перспектива, только вдруг GLscene все же появится позже и на C++? Тогда и смысл разработки уйдет в небытие...

Я очень сомневаюсь. Теоретически, это конечно возможно. Но от разрабов никаких вестей нету уже несколько лет... Разве что кто-нибудь займется этим, так сказать, "неофициально".

Вообщем, ваш вопрос надо задавать широкой публике! Тогда и получите более ли менее точный ответ...

Знаю я эту широкую публику... Сразу начнутся крики: "Зачем, когда есть Irrlicht / Ogre / и т.д. ?". А другие скажут: "Нафиг нужны эти движки? Пишите под чистый OpenGL / DirectX!".
Мне так кажется, что X3D для C++ имел бы значение для узкого круга пользователей, а именно - тех, кто перешел с GML.

Дело в том, что я почувствовал, что практически не использую ту часть GM, которая не связана с X3D. То есть, все эти drag-n-drop, спрайты, бэкграунды, объекты - все это мне уже не нужно, так как основной упор делается на код X3D. Более того, при использовании X3D в GM получается инициализация сразу двух графических API (DirectX и OpenGL) в одном приложении! А это не есть хорошо. И это не говоря уже о мегабайтовых exe-шниках, несовместимости GM6 с Windows Vista и т.д.
А раз так, почему бы не выбрать другую среду разработки? Где не будет ничего лишнего, и программа будет содержать только те функции, которые мне нужны.
Я, конечно, далек от того, чтобы всех поголовно призывать переходить на C++, но, исходя из вышесказанного, есть повод задуматься.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 14:55
Я бы не сказал, что он громоздкий... ну да ладно, спорить не буду.

Все на него по-разному смотрят
Знаю я эту широкую публику... Сразу начнутся крики: "Зачем, когда есть Irrlicht / Ogre / и т.д. ?". А другие скажут: "Нафиг нужны эти движки? Пишите под чистый OpenGL / DirectX!".
Мне так кажется, что X3D для C++ имел бы значение для узкого круга пользователей, а именно - тех, кто перешел с GML.

Помните Open Xtreme?(Еще бы вы не помнили) Это не о чем вам не говорит? Может стоит написать это на C++? А?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 15:06
Неплохая мысль! Взять какой-нибудь свободный компилятор, привязать к нему функции X3D, добавить готовый код создания окна, написать IDE - и пускай пользователь пишет к нему скрипты типа

double cube = CubeCreate(5,5,5,scene);
ObjectSetPosition(cube,0,2.5,-5);
ObjectSetMaterial(cube,"mtexture");

Или даже сделать конструктор с графическим интерфейсом!

Да, очень интересная перспектива. Спасибо, что подали идею.


Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 15:12
Неплохая мысль! Взять какой-нибудь свободный компилятор, привязать к нему функции X3D, добавить готовый код создания окна, написать IDE...

Уже ждем вашу работу на эту тему
Или даже сделать конструктор с графическим интерфейсом!

Не, конструктор не надо, их не уважают. Мне кажется хватит интерфейса уровня Blitz, только по красивее
Да, очень интересная перспектива. Спасибо, что подали идею.

Ну я собственно для этого тут и сижу

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 08-10-2009 11:23
Готова SDK:
Xtreme3DCpp.zip

В архиве: заголовочные файлы, Xtreme3D.dll, ode.dll, три примера с exe-шниками и исходниками.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 08-10-2009 16:30
Отличная работа, но я все же надеюсь, что вы либо допишите X3D 2.1, либо напишите OpenXtreme(на C++, естественно), либо свяжете это все вместе и тогда вообще чумовая вещь получится
Но как бы то ни было, я все же придерживаюсь GM, но с радостью перейду на связку OpenXtreme + X3D новой версии.
Что касается кода, я так и не понял момент, в котором обновляются параметры. Как это там вообще реализовывается?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 08-10-2009 16:45
Это происходит в главном цикле окна:

while (!bQuit)
{
...
}

Который повторяется, пока окно не будет закрыто. Это узнается путем проверки сообщений windows:

while (!bQuit)
{
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
bQuit = TRUE;
}
else
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
}

Если сообщений нет, мы можем вызывать в этом цикле функции Xtreme3D:

while (!bQuit)
{
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
bQuit = TRUE;
}
else
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
else
{
/ * Функции Xtreme3D */
Update();
ViewerRender(view1);
Sleep(2);
}
}

Sleep(2) в конце - пауза в 2 миллисекунды, чтобы не сильно нагружать проц.

Надеюсь, я понятно объяснил

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 08-10-2009 16:53
Отлично, спасибо)Все понятно! То есть все, что должно обновляется, обновляться будет в этом цикле, аля Alarm, да?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 08-10-2009 17:10
Да, как Alarm или Step.
Честно говоря, я сам далеко не сразу догадался, что обновлять Xtreme3D надо не просто так, а под условием, если нет сообщений. Сначала я просто помещал функции в цикл, и приложение начинало страшно тормозить

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 08-10-2009 18:56
А у вас случайно книжки нет по C++, вообще как вы его изучали? А то мне с окнами не все там понятно, хочется разобраться.
Я уже и программку написал про ShadowVolume, хорошо работает вроде, правда я и не загружал её особо, но все же.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 08-10-2009 19:14
Дело было так. Сначала я прочитал статью про основы C в одном древнем журнале. Статья оказалась очень толковая, она мне до того понравилась, что я ее даже начал перепечатывать (может, скоро доделаю и выложу). До этого я уже видел исходники на C/C++, но они казались мне страшно непонятными. А тут я заинтересовался, стал искать какой-нибудь не жутко монструозный компилятор, наткнулся на Dev-C++. Начал изучать идущие в комплекте исходники. Многого не понял, и потому стал искать руководство "для чайника". Нашел хорошую книгу - "C++ Language Tutorial" (html-версия здесь). Сказать по правде, я ее еще не всю прочитал, но все равно советую. Если надо, могу выложить в PDF-версии.

Насчет окон: я и сам не все понимаю. Общая структура оконного приложения мне ясна, но некоторые мелочи... В общем, работает - и ладно, не буду вникать без надобности.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 08-10-2009 19:27
Спасибо, да, зря я в школе английский не учил

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 08-10-2009 20:51
Ну можно и на русском книжки найти. Например, "C++. Бархатный путь" Марченко или переводы Бьярна Страуструпа. Литературы полно.