另一个XNA问题的时间.这一次纯粹是从技术设计的角度来看.
我的情况是这样的:我已经创建了一个基于GPU计算的粒子引擎,远非完整但它的工作原理.我的GPU可以轻松处理10k颗粒而不会出汗,如果我能添加更多的话,我也不会感到惊讶.
我的问题:每当我同时创建大量粒子时,我的帧率就讨厌我了.为什么?大量的CPU使用,即使我已将其最小化以包含几乎只有内存操作.
仍然通过CPU调用来完成粒子的创建,例如:
当我有大约4个发射器每帧创建一个粒子时,我的FPS降低(当然,每秒只有4帧但是15个发射器将我的FPS降低到25).
创建粒子:
//### As you can see, not a lot of action here. ###
ParticleVertex []tmpVertices = ParticleQuad.Vertices(Position,Velocity,this.TimeAlive);
particleVertices[i] = tmpVertices[0];
particleVertices[i + 1] = tmpVertices[1];
particleVertices[i + 2] = tmpVertices[2];
particleVertices[i + 3] = tmpVertices[3];
particleVertices[i + 4] = tmpVertices[4];
particleVertices[i + 5] = tmpVertices[5];
particleVertexBuffer.SetData(particleVertices);
Run Code Online (Sandbox Code Playgroud)
我的想法是,也许我不应该经常创建粒子,也许有一种方法让GPU创建所有东西,或者我可能只是不知道你是如何做这些东西的.;)
编辑:如果我不经常创建粒子,那么仍然使它看起来很好的解决方法是什么?
所以我发帖在这里,希望你知道如何设计一个好的粒子引擎,如果我在某个地方采取了错误的路线.
想象一下,我在视图中有以下SELECT语句(SQL Server 2008):
SELECT (SELECT CASE
WHEN HISTORY.OUTOFSERV = 'Y' OR HISTORY.OUTOFSERV = 'y' THEN 1
ELSE 0
END) AS OOS
FROM HISTORY
Run Code Online (Sandbox Code Playgroud)
OOS列最终是int类型,但我希望它是bit类型.我怎么能做到这一点?
有没有办法从python中使用表达式从元组中获取一个值?
def Tup():
return (3,"hello")
i = 5 + Tup(); ## I want to add just the three
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
(j,_) = Tup()
i = 5 + j
Run Code Online (Sandbox Code Playgroud)
但这会给我的功能增加几十行,增加一倍.
我是新手.NET程序员.我学习了C#,Windows编程,SQL Server 2005,ASP.NET 3.5.我想问一下,开始从事需要ASP.NET MVC和测试驱动开发的工作是否困难或不合适.我已经获得了"Pro ASP.NET MVC Framework"这本书,但这本书让我感到担忧.那我该怎么办?请帮忙.
-
谢谢你的回答,全部!我现在更加困惑:-)但是我要反对它显示坚持学习.
我已经在模拟器上彻底测试了我的应用程序,但我没有测试应用程序的iphone/ipad/ipod touch.在我在设备上测试之前,是否有可能存在不暴露自身的错误?
如果我有一个macbook,id带我的代码和我一起和朋友或陌生人见面测试应用程序,但我正在使用mac mini :(
感谢您的投入.
对于模糊的标题感到抱歉,但我不确定如何用一个短语来概括这一点.我有一个带有大量冗余C#代码的情况,它看起来像使用某些继承属性或泛型的某种狡猾技巧可以解决这个问题.但是,我不是一个非常有经验的程序员(尤其是使用C#)而且我看不到解决方案.
简化形式的情况看起来像这样.我有一堆类都继承自一种类型.
public class Foo : SuperFoo
{
...
public Foo SomeMethod() { ... }
}
public class Bar : SuperFoo
{
...
public Bar SomeMethod() { ... }
}
public class Baz : SuperFoo
{
...
public Baz SomeMethod() { ... }
}
...
public class SuperFoo
{
...
}
Run Code Online (Sandbox Code Playgroud)
当需要处理这些对象的集合时会出现问题.我的初稿解决方案(坏的解决方案)看起来像这样:
public void SomeEventHasHappened(...)
{
ProcessFoos();
ProcessBars();
ProcessBazes();
...
}
public void ProcessFoos()
{
...
foreach (var foo in fooList)
{
...
foo.SomeMethod();
}
}
public void ProcessBars()
{ …Run Code Online (Sandbox Code Playgroud) 使用Delphi 7 IDE进行调试时,如何在程序文件/ borland/delphi7/source文件夹中进入代码?
听起来像一个愚蠢的问题,但询问的头脑想要调试.(并不是说我认为源代码有什么问题,我只是想知道为什么第9000次我不能将TJpegImage分配给TjpegImage).
在阅读之前,请知道我已阅读有关vanilla WCF,WCF数据服务和RIA服务之间差异的所有其他帖子.我的问题具体是为什么RIA Services被认为是专门针对Silverlight的一种特殊数据源,因为它似乎更有意义让它完成一项工作:充当REST接口背后的业务逻辑层.
看起来随着VS2010的发布,RIA Services巩固了其作为REST数据访问服务背后的业务逻辑层的立场 - 这似乎可以通过域服务类模板中的新"Expose OData Endpoint"选项得到证实. Visual Studio,据我所知,它本质上为你的RIA服务确实为WCFDS为任意数据源做了什么(我相信你可以做到这一点,我相信,但是这个复选框的添加清楚表明RIA服务可以是被视为包含业务逻辑的层,用于增强REST数据端点和/或将其约束到给定的查询集,而不一定是其自身的端点.
所以,如果我有一个业务逻辑的RIA服务,通过OData公开,我可以从WCF客户端应用程序添加对OData服务的引用.在客户端上,我获得了一个DataServiceContext派生物,它允许我在客户端上进行工作单元样式工作.我可以从Silverlight应用程序做同样的事情并获得看似相同的东西 - 一个DataServiceContext衍生物.
如果我在我的Silverlight应用程序中使用"RIA服务链接"直接将应用程序绑定到RIA服务而不是添加服务引用,我会获得Visual Studio生成的代码,它似乎支持几乎相同的工作模式,但是使用不同风格的API.
既然如此:
silverlight wcf-data-services silverlight-4.0 wcf-ria-services
我使用带有CodeIgniter的HMVC扩展,我有2个模块
modules/frontpage
-- controllers
frontpage.php ( <- this controller needs to load the person model)
-- models
-- views
modules/person
-- controllers
-- models
person_model.php ( defines Person_Model extends Model )
-- views
Run Code Online (Sandbox Code Playgroud)
$this->load->model('person_model')在frontpage控制器中使用似乎只加载包含在同一模块中的全局或模型(frontpage模型).
这里有CodeIgniter专家吗?
我有两个班,GenericList和SpecificList,其中SpecificList来自继承GenericList. GenericList实现IEnumerable<GenericItem>和SpecificList实现IEnumerable<SpecificItem>. SpecificItem继承自GenericItem.我必须GetEnumerator在两者中实施GenericList,SpecificList因为它们实现了IEnumerable<T>.在GenericList,它很容易,我只返回底层的枚举器List<T>:
public IEnumerator<GenericItem> GetEnumerator()
{
return genericItemsList.GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
然而,在SpecificList,它似乎更棘手.这似乎有风险投IEnumerator<GenericItem>来IEnumerator<SpecificItem>,我不知道这是否会甚至工作.相反,我做了以下事情:
public new IEnumerator<SpecificItem> GetEnumerator()
{
IEnumerator<GenericItem> enumerator = base.GetEnumerator();
while (enumerator.MoveNext())
{
yield return (SpecificItem)enumerator.Current;
}
}
Run Code Online (Sandbox Code Playgroud)
这编译很好,一个简单的MSTest单元测试调用SpecificList.GetEnumerator()似乎表明它的工作原理.但是,ReSharper base在上述方法中突出显示以下警告:
通过匿名方法,lambda表达式,查询表达式或迭代器中的'base'关键字访问GenericList.GetEnumerator会导致无法验证的代码
这是我应该担心的吗?我应该采取不同的做法吗?
编辑: 我正在使用ReSharper 5.1完整版预发布版本5.1.1715.35.
此外,我应该暂停运行MSTest单元测试:我只需在Chrome中点击Ctrl+ R,Ctrl …
.net ×2
c# ×2
testing ×2
asp.net ×1
asp.net-mvc ×1
codeigniter ×1
debugging ×1
delphi ×1
delphi-7 ×1
ienumerable ×1
ipad ×1
iphone ×1
iterator ×1
model ×1
module ×1
oop ×1
python ×1
resharper ×1
silverlight ×1
sql ×1
sql-server ×1
t-sql ×1
tuples ×1
warnings ×1
xna ×1