是否可以在libGdx(Android/Desktop的Java引擎)中使用SpriteBatch渲染到纹理?如果是这样,怎么办?
基本上我想将所有内容渲染到512 x 256纹理的320 x 240区域,而不是缩放区域以适合屏幕(在横向模式下).这样我想消除当我独立缩放alpha混合纹理时发生的伪像.如果有任何其他方法来删除这些工件,请指出它们:)
还有libGdx的在线文档吗?
我正在谷歌搜索过去一小时的问题,但只有泰勒系列或一些示例代码的要点太慢或根本不编译.好吧,我发现谷歌的答案大多是"Google it,它已经被问到了",但遗憾的是它不是 ......
我在低端Pentium 4上分析我的游戏,发现大约85%的执行时间浪费在计算窦,cosinus和平方根(来自Visual Studio中的标准C++库)上,这似乎与CPU密切相关(在我的I7上,相同的功能只有5%的执行时间,并且游戏更快了waaaaaaaaaa).我不能优化这三个函数,也不能在一次传递中计算正弦和余弦(相互依赖),但我不需要太精确的模拟结果,所以我可以使用更快的逼近.
那么,问题是:在C++中计算float的正弦,余弦和平方根的最快方法是什么?
编辑 查找表更加痛苦,因为在现代CPU上产生的Cache Miss比Taylor系列更昂贵.这些天CPU很快,而缓存则不然.
我犯了一个错误,我虽然需要为Taylor系列计算几个阶乘,我现在看到它们可以实现为常量.
所以更新的问题是:对于平方根还有任何快速优化吗?
EDIT2
我使用平方根计算距离,而不是规范化 - 不能使用快速反平方根算法(如评论中所指出:http://en.wikipedia.org/wiki/Fast_inverse_square_root
EDIT3
我也无法在平方距离上操作,我需要精确的距离进行计算
有两个SQL表:
Parents:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1| 1 | 123 |
| 2| 1 | 35 |
| 3| 2 | 15 |
+--+------+-------+
Run Code Online (Sandbox Code Playgroud)
我想从Parents表的每一行中选择单个查询,并从Childs表中选择与"parent" - "id"值和最大"feature"列值相关的每一行.在此示例中,结果应为:
+----+------+----+--------+---------+
|p.id|p.text|c.id|c.parent|c.feature|
+----+------+----+--------+---------+
| 1 | Blah | 1 | 1 | 123 |
| 2 | Blah2| 3 | 2 | 15 |
| 3 | Blah3|null| null | null |
+----+------+----+--------+---------+
Run Code Online (Sandbox Code Playgroud)
其中p …
在 C# 中,我在给定的类(非静态)中定义了以下方法:
int MyMethod(ScriptEngine script, int a, int b) {
return a + b;
}
void MyMethod2(ScriptEngine script, string c) {
// do something with c
}
Run Code Online (Sandbox Code Playgroud)
我想创建包装 lambda / Action / Delegate / MethodInfo(所有这些都被脚本引擎接受),它会自动传递ScriptEngine和this从给定的预定义变量。
到目前为止,我已经尝试过:
// With overloads up to 16 template parameters
Action<T1> Wrap<T1>(Action<ScriptEngine, T1> func, ScriptEngine script) {
return (Action<T1>) ((t1) => func(script, t1));
}
Run Code Online (Sandbox Code Playgroud)
但是当调用 MyMethod2 时,我得到了The type arguments for method … cannot be inferred from the usage. Try specifying …
(我很惊讶这个问题现在没有在Stack上问过,但是我已经做了一些搜索而且找不到任何东西oO)
我正在研究基于服务的webapp,我想知道处理用户登录的最佳方法是什么.到目前为止,我有:
有人注意到最好在cookie中存储唯一的会话ID而不是哈希密码,我想知道为什么它如此重要 - 如果有人嗅探数据包,而不管会话ID是否 - 他们仍然可以从登录中获取包含所有数据的数据包需要伪装成合法用户并自行登录.那么存储会话ID方法还有什么其他优点,而不是在cookie appraoach中存储登录和哈希密码?
我是在Windows平台上工作的独立游戏开发人员,但我实际上几乎没有使用Linux和为其部署应用程序的经验.我在Windows上基于SDL 2.0和其他几个跨平台依赖项(如AngelScript或PugiXML)编写了用C++ 11编写的游戏,我也希望通过Linux分发它,并对此有一些疑问.该游戏是商业,封闭源,目前在Steam的GreenLite,但我想分发从我的网站下载的免费alpha版本,无论GreenLite状态如何.
1.)主要的Linux发行版ABI(应用程序二进制接口)是否兼容?或者我是否需要在每个支持的发行版/平台上编译我的游戏?
2.)如果是这样,哪些发行版/平台是合理的选择支持?
3.)安装应用程序及其依赖于Linux的最佳方法是什么?我读过有关deb和rpm系统的内容,但它仍然令人困惑 - 有没有办法自动为各种发行版生成安装程序包?
4.)Steam如何与Linux配合使用?我应该如何准备我的应用程序以通过它分发?
对不起,如果我提出错误的问题,Linux的整个世界对我来说都是新鲜的,我迷失了阅读各种文章和手册页......
更新
我使用下面的解决方案(从流加载图像),但得到新的问题.img对象绝对正确Image类实例,所有字段都填充了正确的值.但是打电话
img.Save("path/to/new/image.bmp");
Run Code Online (Sandbox Code Playgroud)
在它上面导致GDI +的新异常(System.Runtime.InteropServices.ExternalException,在GDI +接口中) - 我收到错误消息但是很好,我不知道如何翻译它.
原始问题
我有C#.NET Framework 2.0的问题
基本上我试图实现:
Image img = Image.FromFile("Path/To/Image.bmp");
File.Delete("Path/To/Image.bmp"); // Exception, the file is in use!
Run Code Online (Sandbox Code Playgroud)
删除原始文件时,将图像副本保留在内存中非常重要.我虽然有点奇怪,.NET仍然锁定硬盘上的文件,尽管它不再需要任何操作(整个图像现在在内存中,不是吗?)
所以我试过这个解决方案:
Image img = new Image(Image.FromFile("Path/To/Image.bmp")); // Make a copy
// this should immiedietaly destroy original loaded image
File.Delete("Path/To/Image.bmp"); // Still exception: the file is in use!
Run Code Online (Sandbox Code Playgroud)
我可以:
Image img = null;
using(Image imgTmp = Image.FromFile("Path/To/Image.bmp"))
{
img = new Bitmap(imgTmp.Width, imgTmp.Height, imgTmp.PixelFormat);
Graphics gdi = Graphics.FromIage(img);
gdi.DrawImageUnscaled(imgTmp, 0, 0);
gdi.Dispose();
imgTmp.Dispose(); // just …Run Code Online (Sandbox Code Playgroud) 我在OpenGL中制作2D精灵引擎,我想禁用mipmap,因为我不需要它们.
我打电话的时候:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, internal->internal_w, internal->internal_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, internal->data);
RenderWithThisTexture();
Run Code Online (Sandbox Code Playgroud)
我白了,但是当我打电话时:
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, internal->internal_w, internal->internal_h, GL_RGBA, GL_UNSIGNED_BYTE, internal->data);
RenderWithThisTexture();
Run Code Online (Sandbox Code Playgroud)
我得到了正确纹理的矩形
我发现这可能是因为启用了mipmap,但遗憾的是我找不到任何有关如何禁用它们的信息.
我想坚持使用OpenGL 1.1(不是OGL 2.0或更高代码)
我正在分析我简单的2D XNA游戏.我发现整个运行时间的4%是通过将两个颜色加在一起的简单操作来实现的,其中一个首先乘以浮点数.
我需要每帧调用这个方法rogulthy 2000次(对于地图上的每个tile),这给了我每秒120000次XNA的60 fps.即使是最小的单次呼叫提升也会产生巨大的速度影响.然而,我很简单,不知道如何才能使这更有效
private void DoColorCalcs(float factor, Color color)
{
int mul = (int)Math.Max(Math.Min(factor * 255.0, 255.0), 0.0);
tile.Color = new Color(
(byte)Math.Min(tile.Color.R + (color.R * mul / 255), 255),
(byte)Math.Min(tile.Color.G + (color.G * mul / 255), 255),
(byte)Math.Min(tile.Color.B + (color.B * mul / 255), 255));
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如迈克尔斯图姆所建议的那样:
private void DoColorCalcs(float factor, Color color)
{
factor= (float)Math.Max(factor, 0.0);
tile.Color = new Color(
(byte)Math.Min(tile.Color.R + (color.R * factor), 255),
(byte)Math.Min(tile.Color.G + (color.G * factor), 255),
(byte)Math.Min(tile.Color.B + (color.B * …Run Code Online (Sandbox Code Playgroud) 我还是C++ 11 thread_local存储的新手.特别是我对以下代码感到好奇:
class foo_t
{
foo_t() { std::cout << "Foo ctor"; }
~foo_t() { std::cout << "Foo dtor"; }
}
thread_local foo_t foo;
void bar() { }
void baz() { }
int main()
{
std::thread t1(bar), t2(baz);
t1.join(); t2.join();
}
Run Code Online (Sandbox Code Playgroud)
foo_t在这个例子中,ctor/dtor是否会被调用两次(我的意思是标准是否需要这样做)?如果我搬到bar其他翻译单位怎么办?如果这样的单位没有声明foo_t也foo怎么办?
c# ×3
c++ ×2
optimization ×2
.net ×1
android ×1
c++11 ×1
deployment ×1
lambda ×1
libgdx ×1
linux ×1
login ×1
math ×1
mipmaps ×1
opengl ×1
opengl-es ×1
profiling ×1
reflection ×1
security ×1
session ×1
sql ×1
sql-server ×1
t-sql ×1
trigonometry ×1
xna ×1