|
24.10.2010, 13:01
|
#1
|
AnyKey`щик
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение (для 3 участников)
|
Математка и C++
Вопрос состоит в следующем.
Стоит ли писать всю математику на C++, а затем выводить ее в библиотеку и прекреплять к проекту на блице?
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?
Есть ли статья по написаную dll для блица в C++?
|
(Offline)
|
|
24.10.2010, 13:23
|
#2
|
Разработчик
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений (для 66 пользователей)
|
Ответ: Математка и C++
Вот почитай
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.10.2010, 13:27
|
#3
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Математка и C++
1) если ты не пишеш программу для расчета траэктории небесных тел для НАСА то нет !!
2) если 'пункт 1' <> 1 то хватит того что есть !!
3) в блице в юзерлибах есть .тхт файл, посмотри его !! Есть и другие примеры (у андреймэна на сайте отличный пример) !!
4) ??
|
(Offline)
|
|
24.10.2010, 13:37
|
#4
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Математка и C++
Если я не ошибаюсь, то простые математические действия Blitz3d переводит сразу в машинный код, и быстродействие разных минус/плюс/умножить/делить совпадает с любым современным высоким языком программирования
|
(Offline)
|
|
24.10.2010, 13:43
|
#5
|
AnyKey`щик
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение (для 3 участников)
|
Ответ: Математка и C++
Сообщение от IGR
1) если ты не пишеш программу для расчета траэктории небесных тел для НАСА то нет !!
2) если 'пункт 1' <> 1 то хватит того что есть !!
3) в блице в юзерлибах есть .тхт файл, посмотри его !! Есть и другие примеры (у андреймэна на сайте отличный пример) !!
4) ??
|
но и не тетрис я пишу, так что хз=)
Сообщение от Reks888
Если я не ошибаюсь, то простые математические действия Blitz3d переводит сразу в машинный код, и быстродействие разных минус/плюс/умножить/делить совпадает с любым современным высоким языком программирования
|
А операции со строками, другие функции (sin/cos sqrt log ну итд) да и просто обычные циклы/условия.
|
(Offline)
|
|
24.10.2010, 14:00
|
#6
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Математка и C++
а другие переводятся в C++ код и там компилируется
Ты можешь разве что сделать тоже самое что и Марк, только хуже.
Если тебе важно быстродействие - пиши на BlitzMax+Xors3D
Разницы между Xors3D и Blitz3D почти нет, зато будет ООП, девятые директХ и скорость в тысячу раз выше.
|
(Offline)
|
|
24.10.2010, 14:07
|
#7
|
AnyKey`щик
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение (для 3 участников)
|
Ответ: Математка и C++
Сообщение от Reks888
а другие переводятся в C++ код и там компилируется
Ты можешь разве что сделать тоже самое что и Марк, только хуже.
Если тебе важно быстродействие - пиши на BlitzMax+Xors3D
Разницы между Xors3D и Blitz3D почти нет, зато будет ООП, девятые директХ и скорость в тысячу раз выше.
|
Ты в этом уверен? в блице есть встроеный компилятор для с++ ?
Можно подойти к вопросу с другой стороны. То что я напишу на с++ можно будит использовать где угодно потом, не переписывая все заново.
Мне нужен именно Блиц3д.
Остается неоткрытым вопрос номер 2:
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?
Или еще какая то инфа по другим.
|
(Offline)
|
|
24.10.2010, 14:11
|
#8
|
|
Ответ: Математка и C++
ничего никуда не переводится, blitz3d очень тормозной в плане выполнения, если нужна скорость то думаю стоит вынести большие блоки вычислений в библиотеку
|
|
|
Сообщение было полезно следующим пользователям:
|
|
24.10.2010, 16:14
|
#9
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Математка и C++
Сообщение от xRand
Вопрос состоит в следующем.
Стоит ли писать всю математику на C++, а затем выводить ее в библиотеку и прекреплять к проекту на блице?
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?
Есть ли статья по написаную dll для блица в C++?
|
в первую очередь, блитц страдает не столько скростью, сколько точностью: штатного float-а мало на что хватит.
Рассмотрим пример, демонстрирующий нехватку разрядной сетки переменной стандартного типа float (на 4 байта).
Очевидно, что результат вычисления следующего выражения:
a:=14.143
k:=3
R:=1+(a-(a*k)/k)
равенд единице-
R:=1+(a-(a*k)/(k)=1+(a-a)=1+0=1
Рассмотрим результат вычислений указанного выражения при помощи 4-байтной float-переменной/ Выполним следующий листинг:
a#=14.143
k#=3
R#=1+(a-(a*k)/k)
DebugLog "float-test"
DebugLog R
Результат выполнения следующий:
Пример демонстрирует, как быстро может упасть точность вычислений без использования аналитического упрощения вычисляемого выражения или вовлечения в расчеты переменных с большим объёмом внутренней памяти.
В большинстве практических случаев аналитический разбор (символьные преобразования) выражения является ресурсоёмкой и трудноинтегрируемой для конкретных вычислений задачей, таким образом, использование ....
Смотри также: http://forum.boolean.name/showthread.php?t=2451 - текст тамошней темы (особенно за моим авторством) следует творчески переосмыслить в свете вышесказанного.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
24.10.2010, 17:39
|
#10
|
AnyKey`щик
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение (для 3 участников)
|
Ответ: Математка и C++
Ну что выводить в длл код не связанный с 3д графикой смысл имеет мы уже выяснили.
Теперь остаеца неясный следующий вопрос:
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?
Проще говоря какие операторы использовать нельзя?)
кто что может сказать по этому поводу?
еще такой вопрос:
вот допустим создали мы модель какую нить
CreateModel a
потом удалили ссылку на адрес.
a= 238423
но модель осталась в памяти.
удалить ее как то можно будит?)
|
|
(Offline)
|
|
24.10.2010, 18:14
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Математка и C++
Сообщение от xRand
Ну что выводить в длл код не связанный с 3д графикой смысл имеет мы уже выяснили.
Теперь остаеца неясный следующий вопрос:
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?
Проще говоря какие операторы использовать нельзя?)
кто что может сказать по этому поводу?
еще такой вопрос:
вот допустим создали мы модель какую нить
|
есть особенности с передачей строк (в С++ в данном случае это массив типа char, созданный динамически) - читай мануал.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
24.10.2010, 19:11
|
#12
|
AnyKey`щик
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение (для 3 участников)
|
Ответ: Математка и C++
Сообщение от impersonalis
есть особенности с передачей строк (в С++ в данном случае это массив типа char, созданный динамически) - читай мануал.
|
string юзать нельзя тоесть?
и все? или еще чтото есть?
|
(Offline)
|
|
24.10.2010, 23:28
|
#13
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Математка и C++
Внутри своей либы можешь юзать что угодно. Но с блитцем надо общаться через char *.
А еще там какая-то неведомая фигня с типом bool. Я уже не помню что именно. Если товарищ Knightmare заглянет сюда, то скажет.
__________________
|
(Offline)
|
|
25.10.2010, 01:07
|
#14
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Математка и C++
Ну, в общем-то, можно и wchar и bool, просто следует понимать, что блитц это сможет обработать только как что-то из: строка (массив "байт-символ"), int, float, буффер ( банк, считанное из которого так или иначе надо привести к указанным ранее типам, например: http://forum.boolean.name/showpost.p...8&postcount=10).
На строках я остановился потому, что в программу передаётся указатель. Поэтому надо проконтролировать, чтобы DLL не высвободила память ранее, чем программа перестанет работать с данным текстом. Возможно использовать либо статическую память (Кнайт поправит), или интерфейс, позволяющий не только получать значение, но и влиять на его существование: например получили указатель некторой функцией GET, сохранили/проанализировали текст, удалили некоторой фунцией DEL.
Поравьте, если ошибаюсь - с самописными DLL работаю не так часто.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.10.2010, 04:07
|
#15
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Математка и C++
1) В качестве сток блитз получает\передает char*. Поэтому нет проблем с передачей, есть проблема с получением данных из DLL, т.к. память выделенная под буфер на стеке будет очищена при выходе из функции. Поэтому только в куче выделять строки для передачи в блитз. Но тогда может потечь память. Хороший вариант иметь статичную std::string (или аналог), и возвращать ее буфер. Тогда память будет менеджится непосредственно инстансом класса. Ну а блитз при получении строки делает ее копию, поэтому изменения строки в либе как бэ пофиг.
2) bool в топку. Блитз не умеет оперировать с однобайтовыми переменными, поэтому будет считывать 4 байта, соответственно будет верный младший байт и 3 байта мусора. Отсюда полезут глюки.
3) Нельзя понижать точность float'ов для ускорения математики. Блитз будет радостно кидать INF и NaN.
4) Можно передавать еще и объекты юзеровских типов, да. Не обязательно запихивать их в банки.
Как-то так короче. В любом случае в DLL стоит выносить что-то большое, типа там поиска пути и т.п. Иначе больше на вызовах функций потеряется (а блитз, сцуко, и тут не блещет).
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:23.
|