Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 24.10.2010, 13:01   #1
xRand
AnyKey`щик
 
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение
(для 3 участников)
Математка и C++

Вопрос состоит в следующем.

Стоит ли писать всю математику на C++, а затем выводить ее в библиотеку и прекреплять к проекту на блице?

Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?

Есть ли статья по написаную dll для блица в C++?
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 13:23   #2
maxturbo
Разработчик
 
Аватар для maxturbo
 
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений
(для 66 пользователей)
Ответ: Математка и C++

Вот почитай
Вложения
Тип файла: rar Написание Библиотек для Blitz.rar (245.7 Кб, 484 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xRand (24.10.2010)
Старый 24.10.2010, 13:27   #3
IGR
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
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Математка и C++

Если я не ошибаюсь, то простые математические действия Blitz3d переводит сразу в машинный код, и быстродействие разных минус/плюс/умножить/делить совпадает с любым современным высоким языком программирования
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 13:43   #5
xRand
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
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Математка и C++

а другие переводятся в C++ код и там компилируется
Ты можешь разве что сделать тоже самое что и Марк, только хуже.
Если тебе важно быстродействие - пиши на BlitzMax+Xors3D
Разницы между Xors3D и Blitz3D почти нет, зато будет ООП, девятые директХ и скорость в тысячу раз выше.
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 14:07   #7
xRand
AnyKey`щик
 
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение
(для 3 участников)
Ответ: Математка и C++

Сообщение от Reks888 Посмотреть сообщение
а другие переводятся в C++ код и там компилируется
Ты можешь разве что сделать тоже самое что и Марк, только хуже.

Если тебе важно быстродействие - пиши на BlitzMax+Xors3D
Разницы между Xors3D и Blitz3D почти нет, зато будет ООП, девятые директХ и скорость в тысячу раз выше.
Ты в этом уверен? в блице есть встроеный компилятор для с++ ?

Можно подойти к вопросу с другой стороны. То что я напишу на с++ можно будит использовать где угодно потом, не переписывая все заново.

Мне нужен именно Блиц3д.

Остается неоткрытым вопрос номер 2:
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?

Или еще какая то инфа по другим.
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 14:11   #8
jimon
 
Сообщений: n/a
Ответ: Математка и C++

ничего никуда не переводится, blitz3d очень тормозной в плане выполнения, если нужна скорость то думаю стоит вынести большие блоки вычислений в библиотеку
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xRand (24.10.2010)
Старый 24.10.2010, 16:14   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
Результат выполнения следующий:
float-test
0.999999
Пример демонстрирует, как быстро может упасть точность вычислений без использования аналитического упрощения вычисляемого выражения или вовлечения в расчеты переменных с большим объёмом внутренней памяти.
В большинстве практических случаев аналитический разбор (символьные преобразования) выражения является ресурсоёмкой и трудноинтегрируемой для конкретных вычислений задачей, таким образом, использование ....

Смотри также: http://forum.boolean.name/showthread.php?t=2451 - текст тамошней темы (особенно за моим авторством) следует творчески переосмыслить в свете вышесказанного.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Arles (24.10.2010), baton4ik (24.10.2010), xRand (24.10.2010)
Старый 24.10.2010, 17:39   #10
xRand
AnyKey`щик
 
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение
(для 3 участников)
Ответ: Математка и C++

Ну что выводить в длл код не связанный с 3д графикой смысл имеет мы уже выяснили.

Теперь остаеца неясный следующий вопрос:
Есть ли какие то ограничения на функции(и прочие прелести кода) используемые в C++ если потом экспортировать код в dll для блиц?

Проще говоря какие операторы использовать нельзя?)

кто что может сказать по этому поводу?

еще такой вопрос:
вот допустим создали мы модель какую нить

CreateModel a

потом удалили ссылку на адрес.

a= 238423

но модель осталась в памяти.

удалить ее как то можно будит?)
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 18:14   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
xRand
AnyKey`щик
 
Регистрация: 24.10.2010
Сообщений: 7
Написано одно полезное сообщение
(для 3 участников)
Ответ: Математка и C++

Сообщение от impersonalis Посмотреть сообщение
есть особенности с передачей строк (в С++ в данном случае это массив типа char, созданный динамически) - читай мануал.
string юзать нельзя тоесть?

и все? или еще чтото есть?
(Offline)
 
Ответить с цитированием
Старый 24.10.2010, 23:28   #13
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Математка и C++

Внутри своей либы можешь юзать что угодно. Но с блитцем надо общаться через char *.
А еще там какая-то неведомая фигня с типом bool. Я уже не помню что именно. Если товарищ Knightmare заглянет сюда, то скажет.
__________________

(Offline)
 
Ответить с цитированием
Старый 25.10.2010, 01:07   #14
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xRand (25.10.2010)
Старый 25.10.2010, 04:07   #15
Knightmare
Дэвелопер
 
Регистрация: 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 за это полезное сообщение:
ABTOMAT (28.10.2010), Arles (25.10.2010), impersonalis (25.10.2010), xRand (25.10.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:23.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com