HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > MakeVectors vs VECTOR_ANGLES
ночная упоротость
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Red face MakeVectors vs VECTOR_ANGLES

Все любят

UTIL_MakeVectors(angles);
и потом кушать всякие gpGlobals->v_*

а мне больше нравится

Vector fwd;
ANGLE_VECTORS(angles, fwd, NULL, NULL);
и кушать fwd.

Каковы ваши за и против?

Мои "за":
- не считаются ненужные векторы - ПРОФИТ!!
- не закакиваются глобалы, которые вечно всеми путаются
- просто наглядно

amirite?
выскажитесь.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 126869

Старое сообщение 01-11-2013 20:17
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32132
Нанёс повреждений: 392 ед.

Рейтинг



C++ Source Code:
1
void pfnMakeVectors( const float *rgflVector )
2
{
3
  AngleVectors( rgflVector, svgame.globals->v_forward, svgame.globals->v_right, svgame.globals->v_up );
4
}

Вообще не вижу разницы, да и нету её. Глобалсы удобнее тем, что не надо заводить каждый раз три переменных. Можно конечно там NULL понапихать, но всё равно минимум одну заводить придётся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 126870

Старое сообщение 01-11-2013 20:30
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
просто наглядно

Я бы поспорил. У тебя fwd - Vector? Наглядно то, что ты передаёшь его по значению в функцию, и следовательно, в него ничего не запишется. И только знающие люди сообразят, что при этом вызывается оператор каста в флоат*. Вот она, типично вальвовская наглядность. Учитесь, товарищи!

ЗЫ: в волатиле надо было бы написать:
ANGLE_VECTORS(angles, &fwd, NULL, NULL);
Т.е. взять адрес именно вектора, никаких неочевидных кастов. Но в волатиле и нет такой срани, когда вектор в одной дллке - арай из 3 флоатов, а в другой класс, там он во всех библиотеках класс.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 126874

Старое сообщение 02-11-2013 08:59
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Не придирайся
у меня передача по ссылке или через анонимный юнион или через адрес.... короче, быстро. свой класс Vector я перелопатил весьма сильно (только SIMD не напихал), но речь не об этом.

Вобщем, экономия на неиспользуемых векторах у меня получилась гигантской. Теоретически, на создание временного Vector fwd уходит некоторое кол-во ресурсов, но мат. операции внутри AngleVectors() намного длиннее, имхо.

Кстати, в XDM во всяких TraceAttack(), например, я все векторы передаю как "const Vector &", что есть ня и кавай. :3

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 126941

Старое сообщение 03-11-2013 20:30
- За что?
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Цитата:
~ X ~ писал:
Вобщем, экономия на неиспользуемых векторах у меня получилась гигантской.

О боже, я знал, знал что появиться такой человек на форуме который сделает старый голд сорс намного производительней! Я даже слышал что вам светит нобелевская премия за ваш вклад в геймдев!

За это сообщение pRoxxx получил предупреждение за флуд

Сообщить модератору | | IP: Записан
Сообщение: 126942

Старое сообщение 03-11-2013 21:17
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
анонимный юнион

Любишь варнинги гцц? Или просто не включаешь их?
Цитата:
~ X ~ писал:
только SIMD не напихал

И славабогу, а то тормоза будут те ещё.
Цитата:
~ X ~ писал:
на создание временного Vector fwd уходит некоторое кол-во ресурсов

Внезапно - ничуть не больше, чем на создание арея из 3 флоатов.
Цитата:
~ X ~ писал:
я все векторы передаю как "const Vector &", что есть ня и кавай

Можно и как float*, тащемта, разницы нет, каст оптимизируется в релизе. Главное - не как просто "Vector".

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 126943

Старое сообщение 03-11-2013 22:31
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


C++ Source Code:
1
// GCC doesn't like this
2
//#define ALLOW_ANONYMOUS_STRUCT to use anonymous unions
3
 
4
 
5
class Vector
6
{
7
public:
8
#if defined (ALLOW_ANONYMOUS_STRUCT)
9
  union
10
  {
11
    vec_t array[3];
12
    struct
13
    {
14
      vec_t x;
15
      vec_t y;
16
      vec_t z;
17
    };
18
  };
19
#else
20
  vec_t x;
21
  vec_t y;
22
  vec_t z;
23
#endif
24
 

, например. С юнионами мне нравилось больше.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 127002

Старое сообщение 05-11-2013 14:04
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Ну, да, наглядно. Если бы не anonymous unions.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 127003

Старое сообщение 05-11-2013 14:09
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Что такое юнион я понимаю. как это работает - понимаю. вопрос - зачем так делать?

Сообщить модератору | | IP: Записан
Сообщение: 127004

Старое сообщение 05-11-2013 14:17
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Большая хитрость и профит видны в дальнейшем, когда идёт обращение к элементам ветора как к членам или как к элементам массива (не надо изобретать хак с operator []).

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 127006

Старое сообщение 05-11-2013 14:23
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



то есть это сделано для того что бы не перегружать оператор [], верно? тогда понятно

Сообщить модератору | | IP: Записан
Сообщение: 127008

Старое сообщение 05-11-2013 14:26
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34491
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Ну да. Перегрузка операторов - величайшее зло и плохой стиль программирования.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 127014

Старое сообщение 05-11-2013 16:07
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 08:07. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > MakeVectors vs VECTOR_ANGLES
ночная упоротость
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024