-
Список говнокодов пользователя CPPGovno
Всего: 41
-
+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
-
+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
-
+162
- 1
- 2
if (suspended())
resume();
http://www.gamedev.ru/code/forum/?id=152077
CPPGovno,
07 Сентября 2011
-
+101
- 1
- 2
- 3
i := -7; // если после этой строчки загнать в отладчик i shr 1, то отладчик покажет -4
i := i shr 1; // после этой строчки i становится равно 2147483644
i := (-7) shr 1; // после этой строчки i становится равно 4
Delphi7 такой Delphi7...
http://www.gamedev.ru/code/forum/?id=138759&page=25#m367
Тарас любит дельфи.
CPPGovno,
06 Сентября 2011
-
+976
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
public static bool MegaDispose(this IDisposable thіs)
{
if (thіs != null)
{
thіs.Dispose();
return true;
}
return false;
}
CPPGovno,
05 Сентября 2011
-
+169
- 1
- 2
- 3
- 4
- 5
inline float _read_zbuf(int x, int y){
float v;
glReadPixels(x,screen.height-y+1,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&v);
return v;
}
>Для определения жизни под мышкой решил использовать изменение значений в буфере глубины, но glGetPixels уронил мне фпс на 300, и это один вызов финальной проверки, а что будет когда объекты проверятся начнут подумать страшно.
Неужели все так плохо ???
http://www.gamedev.ru/code/forum/?id=151921
CPPGovno,
03 Сентября 2011
-
+170
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
assert( top( o-------o
|L \
| L \
| o-------o
| ! !
! ! !
o | !
L | !
L| !
o-------o ) == ( o-------o
| !
! !
o-------o ) );
CPPGovno,
02 Сентября 2011
-
+147
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
template<typename _Tp>
pair<_Tp*, ptrdiff_t>
get_temporary_buffer(ptrdiff_t __len)
{
const ptrdiff_t __max =
__gnu_cxx::__numeric_traits<ptrdiff_t>::__max / sizeof(_Tp);
if (__len > __max)
__len = __max;
while (__len > 0)
{
_Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
std::nothrow));
if (__tmp != 0)
return std::pair<_Tp*, ptrdiff_t>(__tmp, __len);
__len /= 2; // !?!?!?!?!?!?!?!?
}
return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
}
template<typename _Tp>
inline void
return_temporary_buffer(_Tp* __p)
{ ::operator delete(__p, std::nothrow); }
CPPGovno,
02 Сентября 2011
-
+153
- 1
- 2
- 3
bool (A::*F[2])(int);
//...
return (this->*F[n])(i);
CPPGovno,
02 Сентября 2011