我正在尝试将视频同步到在iPad上使用openGL绘制的动画,有两件事我不知道该怎么做:
我试图弄清楚如何在Windows游戏中手动管理整个游戏循环,而不使用常规游戏Microsoft.Xna.Framework.Game类.
这样做的原因是使用常规的Game类会导致我的游戏中出现一些口吃.不多,但由于游戏的特殊性,它仍然是非常明显的.
在尝试了一堆不同的设置(vsync,fixedtimestep,各种帧率等)后,我决定尝试编写自己的Game类来完全控制时间.我不确定会解决它,但至少这样我完全可以控制.
基本上我需要:
谁知道怎么做?事实上这听起来很容易,但找不到任何关于如何做的文档.
不确定我做错了什么,但我有以下代码(仅用于测试,时间将以不同方式处理),并且循环将运行一段时间然后停止.一旦我将鼠标指针移过窗口,循环将再次运行一段时间.
private void Application_Idle(object pSender, EventArgs pEventArgs)
{
Thread.Sleep(500);
//Message message;
//while (!PeekMessage(out message, IntPtr.Zero, 0, 0, 0))
{
gametime.update();
Update(gametime);
Draw(gametime);
GraphicsDevice.Present();
}
}
Run Code Online (Sandbox Code Playgroud)
如果启用"while PeekMessage",循环将连续运行,但忽略睡眠并在鼠标移动窗口时停止.不确定这里发生了什么......
我认为最好我只想在主渲染循环中做这样简单的事情:
while (alive)
{
Thread.Sleep(100);
gametime.update();
Update(gametime);
Draw(gametime);
GraphicsDevice.Present();
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,窗口仍然是空白的,因为看起来窗口实际上没有使用新内容重绘.我尝试了一个form.Refresh(),但仍然没有...任何想法?
我正在制作一个基于OpenGL的通用应用程序,可以在ipod/iphone 2G/3G/3GS/4和iPad上运行.
为了提供最好的图形,我需要根据运行它的设备在不同的纹理分辨率之间切换.
例如,iPhone 2G需要不大于1024x1024的纹理,而iPhone 3GS可以处理更大的纹理.
因此,在iPhone 3GS上我想加载2048x2048的纹理图集,而iPhone 2G将获得缩小的1024x1024纹理图集.
有没有一种简单而安全的方法来检测任何所述设备上openGL可用的最大纹理分辨率?
在设置openGl曲面之前,我需要确定我的应用程序运行的iPad版本.
如果它在旧的iPad 1上运行,那么启用抗锯齿的速度太慢了,而在iPad 2 + 3上应该没有性能问题,所以我需要先检测一下.
有关如何使用Monotouch检测iPad生成的任何想法?
我正在制作一个游戏,我也希望移植到许多其他平台,为此我想用脚本语言编写一些游戏逻辑以简化移植.
我理解Apple虽然对解释代码施加了限制,但我想知道iOs4及更早版本是否存在任何安全的脚本替代方案?
我正在考虑将脚本编写为Javascript,将它们传递给带有运行参数的不可见UIwebView,然后将结果作为可解析的字符串读回.是否可行,"Apple政策安全"?虽然相当"hackish",但如果有人这样做过,我想看看它是如何完成的......
如果没有,还有其他选择吗?