Автор | Сообщение | ||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 04-10-2009 13:09 | ||
На днях добился определенных успехов в привязке функций X3D к C++. Производительность радует (на глаз - процентов на 20 выше, чем в GM, причем с 50% нагрузкой на CPU и пятикратным снижением потребления памяти). Использую среду Dev-C++ c компилятором Mingw. В связи с этим встает вопрос: какова реальная востребованность такой разработки? Насколько я знаю, версии GLScene для C++ не существует (хотя были слухи), поэтому X3D для C++ может стать полезной вещью. Планирует ли кто-нибудь изучать С++ и потенциально перейти на него в будущем? |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 04-10-2009 13:53 | ||
Я думаю этого и следовало ожидать.
Лично я программирую в свое удовольствие, хобби вобщем. И я настроен делать игры или примеры игр для людей и для себя. Поэтому если я буду что-то делать, то выберу либо Panda+питон, Basic+что нибудь, GLscene+Delphi и т.д Но изучать громоздкий C++ или jаvа нет желания, да и времени. Поэтому, лично я не собираюсь переходить, ведь даже профессия моя будет совсем не связанная с программированием. А вообще, возможно в портировании есть перспектива, только вдруг GLscene все же появится позже и на C++? Тогда и смысл разработки уйдет в небытие... Вообщем, ваш вопрос надо задавать широкой публике! Тогда и получите более ли менее точный ответ... |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 04-10-2009 14:46 | ||
Я бы не сказал, что он громоздкий... ну да ладно, спорить не буду. Причина, по которой лично я выбрал C++ - это огромное количество документации и исходников, повсеместная поддержка и многолетний опыт профессиональных программистов.
Я очень сомневаюсь. Теоретически, это конечно возможно. Но от разрабов никаких вестей нету уже несколько лет... Разве что кто-нибудь займется этим, так сказать, "неофициально".
Знаю я эту широкую публику... Сразу начнутся крики: "Зачем, когда есть Irrlicht / Ogre / и т.д. ?". А другие скажут: "Нафиг нужны эти движки? Пишите под чистый OpenGL / DirectX!". Мне так кажется, что X3D для C++ имел бы значение для узкого круга пользователей, а именно - тех, кто перешел с GML. Дело в том, что я почувствовал, что практически не использую ту часть GM, которая не связана с X3D. То есть, все эти drag-n-drop, спрайты, бэкграунды, объекты - все это мне уже не нужно, так как основной упор делается на код X3D. Более того, при использовании X3D в GM получается инициализация сразу двух графических API (DirectX и OpenGL) в одном приложении! А это не есть хорошо. И это не говоря уже о мегабайтовых exe-шниках, несовместимости GM6 с Windows Vista и т.д. А раз так, почему бы не выбрать другую среду разработки? Где не будет ничего лишнего, и программа будет содержать только те функции, которые мне нужны. Я, конечно, далек от того, чтобы всех поголовно призывать переходить на C++, но, исходя из вышесказанного, есть повод задуматься. |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 04-10-2009 14:55 | ||
Все на него по-разному смотрят
Помните Open Xtreme?(Еще бы вы не помнили) Это не о чем вам не говорит? Может стоит написать это на C++? А? |
|||
Gecko 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"); Или даже сделать конструктор с графическим интерфейсом! Да, очень интересная перспектива. Спасибо, что подали идею. |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 04-10-2009 15:12 | ||
Уже ждем вашу работу на эту тему
Не, конструктор не надо, их не уважают. Мне кажется хватит интерфейса уровня Blitz, только по красивее
Ну я собственно для этого тут и сижу |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 08-10-2009 11:23 | ||
Готова SDK: Xtreme3DCpp.zip В архиве: заголовочные файлы, Xtreme3D.dll, ode.dll, три примера с exe-шниками и исходниками. |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 08-10-2009 16:30 | ||
Отличная работа, но я все же надеюсь, что вы либо допишите X3D 2.1, либо напишите OpenXtreme(на C++, естественно), либо свяжете это все вместе и тогда вообще чумовая вещь получится Но как бы то ни было, я все же придерживаюсь GM, но с радостью перейду на связку OpenXtreme + X3D новой версии. Что касается кода, я так и не понял момент, в котором обновляются параметры. Как это там вообще реализовывается? |
|||
Gecko 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 миллисекунды, чтобы не сильно нагружать проц. Надеюсь, я понятно объяснил |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 08-10-2009 16:53 | ||
Отлично, спасибо)Все понятно! То есть все, что должно обновляется, обновляться будет в этом цикле, аля Alarm, да? |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 08-10-2009 17:10 | ||
Да, как Alarm или Step. Честно говоря, я сам далеко не сразу догадался, что обновлять Xtreme3D надо не просто так, а под условием, если нет сообщений. Сначала я просто помещал функции в цикл, и приложение начинало страшно тормозить |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 08-10-2009 18:56 | ||
А у вас случайно книжки нет по C++, вообще как вы его изучали? А то мне с окнами не все там понятно, хочется разобраться. Я уже и программку написал про ShadowVolume, хорошо работает вроде, правда я и не загружал её особо, но все же. |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 08-10-2009 19:14 | ||
Дело было так. Сначала я прочитал статью про основы C в одном древнем журнале. Статья оказалась очень толковая, она мне до того понравилась, что я ее даже начал перепечатывать (может, скоро доделаю и выложу). До этого я уже видел исходники на C/C++, но они казались мне страшно непонятными. А тут я заинтересовался, стал искать какой-нибудь не жутко монструозный компилятор, наткнулся на Dev-C++. Начал изучать идущие в комплекте исходники. Многого не понял, и потому стал искать руководство "для чайника". Нашел хорошую книгу - "C++ Language Tutorial" (html-версия здесь). Сказать по правде, я ее еще не всю прочитал, но все равно советую. Если надо, могу выложить в PDF-версии. Насчет окон: я и сам не все понимаю. Общая структура оконного приложения мне ясна, но некоторые мелочи... В общем, работает - и ладно, не буду вникать без надобности. |
|||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 08-10-2009 19:27 | ||
Спасибо, да, зря я в школе английский не учил |
|||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 08-10-2009 20:51 | ||
Ну можно и на русском книжки найти. Например, "C++. Бархатный путь" Марченко или переводы Бьярна Страуструпа. Литературы полно. |