我正在开发一款拥有大量动态实体的2D游戏.为了好玩,让我们称他们为士兵,让我们说有50000个(我只是随机想起来,它可能会更多或更少:)).
所有这些士兵都按照规则移动每一帧 - 想想boids/flocking/steering行为.对于每个士兵来说,为了更新它的运动,我需要最接近我正在处理的X士兵.
什么是最好的空间层次结构来存储它们以方便这样的计算而不需要太多的开销?(每帧都更新/移动所有实体,因此它必须非常好地处理动态实体)
我发现Windows有一些新的Windows数据类型
DWORD_PTR, INT_PTR, LONG_PTR, UINT_PTR, ULONG_PTR
Run Code Online (Sandbox Code Playgroud)
你能告诉我何时,如何以及为何使用它们?
我正在创建一个简单的 opengl 应用程序,它显然包含一些 3d 对象和纹理。然而,我的问题是伪影出现在每个纹理上。这些以沿边缘的三角形的形式出现。
我注意到,一旦我将视点移近它完美渲染的纹理,它就会消失。因此我怀疑它与 mipmapping 或 z-buffer 有关系。请注意,所有纹理坐标都是从 .3ds 文件加载的,并且所有这些坐标都经过验证在 0-1 的范围内。
这是我的问题的图片:
纹理加载如下:
//Texture parameters
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
//Define the 2d texture
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, array);
//Create 2d mipmaps
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, width, height, GL_RGBA, GL_UNSIGNED_BYTE, array);
Run Code Online (Sandbox Code Playgroud) 我需要嗅探器来测试我为Windows和Facebook开发的应用程序的网络流量.
基本要求:
现在我正在使用HTTP Analyzer.一个非常好的工具,但它在Vista运行10-15分钟后终止了一些错误.
在SQL Server 2008 Management Studio中,如何在"数据库"文件夹中创建类似于"系统数据库"的文件夹.
这将是一个像db一样分组的好方法.
我正在尝试通过Android活动中的代码找到一种设置新默认铃声的方法.
我已经将铃声下载到了bytearray.
使用Qt,我试图以非阻塞的方式读取stdin流的内容.当套接字收到一些新数据时,我正在使用QSocketNotifier来提醒我.通知程序的设置如下所示:
QSocketNotifier *pNot = new QSocketNotifier(STDIN_FILENO, QSocketNotifier::Read, this);
connect(pNot, SIGNAL(activated(int)), this, SLOT(onData()));
pNot->setEnabled(true);
Run Code Online (Sandbox Code Playgroud)
该onData()插槽看起来是这样的:
void CIPCListener::onData()
{
qDebug() << Q_FUNC_INFO;
QTextStream stream(stdin, QIODevice::ReadOnly);
QString str;
forever
{
fd_set stdinfd;
FD_ZERO( &stdinfd );
FD_SET( STDIN_FILENO, &stdinfd );
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 0;
int ready = select( 1, &stdinfd, NULL, NULL, &tv );
if( ready > 0 )
{
str += stream.readLine();
}
else
{
break;
}
}
qDebug() << "Recieved data:" << str;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在尝试使用select()系统调用来告诉我何时我的数据用完了.但是,在实践中发生的事情是,在我读完第一行文本后,select()调用返回0.因此,例如,如果我向进程的stdin流写入5行文本,我只读过第一行. …
我正在为一个"注册"应用程序编写一些Cucumber故事,该应用程序有许多步骤.
而不是写一个Huuuuuuuge故事来同时覆盖所有步骤,这将是坏事,我宁愿像常规用户一样在控制器中完成每个动作.我的问题在于我将在第一步中创建的帐户ID存储为会话变量,因此当访问步骤2,步骤3等时,将加载现有的注册数据.
我知道能够controller.session[..]在RSpec规范中访问但是当我尝试在Cucumber故事中执行此操作时它失败并出现以下错误(并且,我也读过某处这是一个反模式等...):
使用controller.session [:whatever]或session [:whatever]
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.session (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
使用会话(:无论如何)
wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)
因此,似乎加入会话存储是不可能的.我想知道的是,是否可能(我想哪个会是最好的......):
get_registration,它分配一个实例变量......)我查看了RSpec书(好吧,浏览过)并浏览了WebRat等,但我还没有真正找到问题的答案......
为了澄清一点,注册过程更像是一个状态机 - 例如用户在注册完成之前通过四个步骤前进 - 因此"登录"实际上不是一个选项(它打破了网站工作原理的模型) )...
在我对控制器的规范中,我能够根据会话var加载对方法的调用 - 但是我不确定'antipattern'行是否也适用于存根和模拟?
谢谢!
我试图找出loggin异常时的最佳实践.
到目前为止,每次遇到异常时我都会记录.但是当较低的杠杆类捕获异常(例如,从数据库层),并将其包装在我们自己的应用程序异常中时 - 我是否还应该在那里记录原始异常,或者我应该让上级杠杆类记录所有细节?
那么由于输入参数错误,我的低级别类决定抛出异常的位置呢?它是否应该在那里记录异常,或者再一次让捕获代码记录下来?
我有一张桌子
create table us
(
a number
);
Run Code Online (Sandbox Code Playgroud)
现在我有以下数据:
a
1
2
3
4
null
null
null
8
9
Run Code Online (Sandbox Code Playgroud)
现在我需要一个查询来计算列a中的null值而不是null值