https://aframe.io/docs/0.8.0/components/material.html#transparency-issues
Благодаря непрозрачности A-Frame устанавливает для средства визуализации three.js значение sortObjects: false
. Порядок прозрачности основан на том, когда объекты добавляются / определяются в сцене. Перемешайте порядок текста, например, HTML, или когда они вводятся, и это должно сработать.
Длина имени переменной не влияет на размер вашей программы, а только на время, необходимое для ее написания.
Имя локальных переменных нужно только компилятору, чтобы найти переменные, к которым вы хотите обратиться. После компиляции эти имена обычно стираются и полностью заменяются числовыми символами или эквивалентами. Это происходит для всех имен, которые практически не связаны (конечно, если вы выполняете отладочную сборку, все может быть иначе). То же самое и с параметрами функции.
Имя глобальных переменных, например, нельзя стереть, потому что вы можете использовать его из другого модуля в своей программе, и компоновщик должен иметь возможность найти его. Но после того, как ваша программа была связана, даже их названия можно стереть.
И в конце концов, они не занимают оперативную память. Эти имена хранятся в таблице перераспределения с целью связывания (см. strip
программу, как удалить эти имена).
Но в любом случае, мы говорим о нескольких байтах, которые уже потрачены впустую на выравнивание и так далее. Сравните это с чертовски длинными именами экземпляров шаблонов. Попробуйте это:
readelf -sW /usr/lib/libboost_*-mt.so | awk '{ print length($0), $0 }' | sort -n
Имена указателей не сохраняются. Имя указателя (или любое имя переменной, если на то пошло) не компилируются в окончательный двоичный файл (при условии, что вы не компилируете символы, включенные).
Указатели - это просто целые числа (или длинные числа), которые хранятся в памяти, которая , в свою очередь, укажите на элемент, на который они указывают, в каком-либо месте памяти.
Microsoft использует префикс «p» для обозначения указателя:
int intOne = 0;
int* pIntOne = &intOne;
На самом деле они используют венгерский для всего.
Это работает довольно хорошо, если вы привыкнете к видя это. Многие сначала думают, что это некрасиво.
Что бы вы ни решили, я считаю полезным указать, что что-то является типом указателя в своем имени, хотя я бы не стал заходить так далеко в вашем примере. :)
Я согласен с предыдущими сообщениями, но я хотел бы указать кое-что вокруг этого. Иногда люди злоупотребляют указателями, думая, что их использование автоматически приведет к небольшому объему памяти. Это не всегда так. Рассмотрим этот фрагмент кода:
void myfunc(const char *var) {
// Function body
}
Указатель на char
будет занимать 4 байта в 32-битной архитектуре, тогда как сам char
обычно занимает 1 байт. (Здесь предполагается, что var
указывает на один байт, а не на строку.) Вы понимаете суть? С другой стороны, вы всегда должны использовать указатели (или ссылки) для сложных объектов:
void myfunc(const string &str) {
// Function body
}
Конечно, если вы хотите изменить переменную внутри своей функции, вы должны удалить ключевое слово const
.
Указатели колодцев чаще всего используются для объектов, которые распределяются динамически, и / или для функций.
В случае динамического выделения вы можете просто поставить перед ним ptr, если вы настаиваете на использовании этой нотации. В случае с функциями веселье тоже работает.
Я не вижу причин, по которым этому должно что-либо предшествовать. Ваш компилятор / редактор сделает всю работу за вас.
Здесь есть два критических момента, которые я хотел бы попытаться выделить:
/ * pszString может указывать только на один символ, который меньше места, чем указатель * / HRESULT OneLetterSplat (char * pszString) { * pszString = 'а'; вернуть УСПЕХ }