-
+149
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
for(int i=0;i<size1;i+=4)
{
float4 boxMax(plist[i+0].Box().vmax[axis], plist[i+1].Box().vmax[axis], plist[i+2].Box().vmax[axis], plist[i+3].Box().vmax[axis]);
float4 boxMin(plist[i+0].Box().vmin[axis], plist[i+1].Box().vmin[axis], plist[i+2].Box().vmin[axis], plist[i+3].Box().vmin[axis]);
register __m128 a = _mm_and_ps(_mm_cmplt_ps(boxMax, vSplit), one);
register __m128 b = _mm_and_ps(_mm_cmpgt_ps(boxMin, vSplit), one);
register __m128 left = _mm_sub_ps(one, b); // left = 1 - b; same as not(b)
register __m128 right = _mm_sub_ps(one, a); // right = 1 - a; same as not(a)
summLeft += (left.m128_i32[0] + left.m128_i32[1] + left.m128_i32[2] + left.m128_i32[3]);
summRight+= (right.m128_i32[0] + right.m128_i32[1] + right.m128_i32[2] + right.m128_i32[3]);
}
http://www.gamedev.ru/code/forum/?id=141592
История про то, как Пятачок оптимизировал простой цикл:
for(int i=0;i<plist.size();i++)
{
if(plist[i].Box().vmax[axis] < split)
summLeft++;
else if(plist[i].Box().vmin[axis] > split)
summRight++;
else
{
summLeft++;
summRight++;
}
}
CPPGovno,
18 Сентября 2011
-
+157
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
class SOME_CLASS
{
public:
struct
{
inline uintb operator = (uintb newValue )
{
(reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_setI( newValue );
}
inline operator uintb ()
{
return (reinterpret_cast<SOME_CLASS*>(static_cast<char*>(this)-offsetof(SOME_CLASS,SOME_CLASS::i)))->_i;
}
...
...
} i;
...
private:
void _setI( uintb newValue );
uintb _i;
}
http://www.gamedev.ru/code/forum/?id=152459#m1
>P.S. обязательно поставить + на govnokod.ru.
CPPGovno,
16 Сентября 2011
-
+158
- 1
boost::weak_ptr<std::queue<std::vector<boost::shared_ptr<sf::Drawable>>>> _frame_queue;
очередь кадров которые поток с игровой логикой скармливает потоку ответственному за рендеринг
tymofey,
15 Сентября 2011
-
+171
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
char *f(char *s1, ...)
{ char **cp = &s1; //--адрес первого указателя
int len = 0;
// цикл для определения общей длины сцепляемых строк
while (*cp) { len += strlen(*cp); cp++; }
char *s = new char[len+1]; //--память для строки
s[0]=0; //-- "очищаем" строку
// цикл для сцепления строк
cp=&s1; //-- опять установка на 1-й параметр
while (*cp)
{ strcat(s, *cp); //-- прицепляем первую (и следующие)
cp++; //-- перемещаемся на следующую
}
return s;
}
Сцепление строк (ноль в конце)
http://www.rsdn.ru/forum/cpp/418970.1.aspx
rat4,
14 Сентября 2011
-
+162
- 1
- 2
- 3
- 4
- 5
void IniRead(UnicodeString Name, int n)
{
TStringList* lst=new TStringList;
Ini->WriteString("CardNames","Card"+(UnicodeString)n,Name);
}
чувак создал переменную lst просто так, для теплоты душевной. ну хотелось ему чтоб создался stringlist!
phys-tech,
14 Сентября 2011
-
+167
- 1
- 2
- 3
- 4
- 5
- 6
- 7
[code=cpp]
#include <iostream.h>
void main(void)
{
cout << Заключайте сообщение в кавычки;
}
[/code]
http://programmersclub.ru/01/
ReallyBugMeNot,
12 Сентября 2011
-
+163
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
/*
См. маткад файл по нерекурсивным цифровым фильтрам.
Рачёт дискретной последовательности отфильтрованного сигнала
У меня то в файликах уже значения, функции нету,а в маткаде такая строка
lpf(k)*x(Ta*(n-k)) - дык тут идёт расчёт функции х(т). Идея!!!
*барабанная дробь*
Сигнал повторяется с периодом 2Пи, тем более данный сигнал
парный. Знач делаем следующее
1. Вычисляем Step = |Ta*(n-k)|.
2. Так как сигнал парный и симетричный на отрезке 2Пи
то значение функции в Step = |step - 2*ПИ| тоже самое, что и
значение функции в Step. Зачем такой геморой? Ибо в файле step.dat
хначения идут до 2*Пи, тобишь до 6.283
3. В файле data.dat на строке Step ищем искомое нам значение,
по сути тоже самое, что и x(Ta*(n-k)), где х - сигнал.
Сл. функция и возвращает значение Step = |step - 2*ПИ|
*/
int FindStep(int k)
{
float step = fabs(fabs((Ta * k)) - 6.283); // (n-k) in main program
return step*1000;
}
Комментарий умилил
denis90,
12 Сентября 2011
-
+146
- 1
- 2
- 3
- 4
void crash()
{
(( void(*)() )0)();
}
Good crash :D
petersvp,
11 Сентября 2011
-
+160
- 1
- 2
- 3
- 4
uint64_t search(StringList& who, const string& aName, const string& aSize,TypeModes aTypeMode, SizeModes aSizeMode, const string& aToken, const StringList& aExtList, void* aOwner = NULL)
{
return search(who, aName, Util::toInt64(aSize), aTypeMode, aSizeMode, aToken, aExtList,aOwner);
}
А теперь небольшой _опрос_ :
Каково, по вашему мнению, необходимое и достаточное
качество и количество параметров метода/функции, при котором необходимо(по самым разным причинам) объединять их(параметры) в _меньшее_количество_ , используя встроенные/пользовательские типы данных.
Например: https://github.com/negativ/eiskaltdcpp/blob/master/dcpp/SearchManager.h
sayidandrtfm,
10 Сентября 2011
-
+161
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
template<typename T,typename FIELD_T>
struct type_has_field{
typedef char yes_type;
struct no_type{char padding[8];};
template<class U>
static yes_type check_sig1(
U*,
FIELD_T(U::*)=&U::field // !!!Most importantly!!!
);
template<class U>
static no_type check_sig1(...);
static const bool value=sizeof(check_sig1<T>(0))==sizeof(yes_type);
};
http://www.gamedev.ru/code/forum/?id=152200
CPPGovno,
10 Сентября 2011