小编lve*_*lla的帖子

无法在代码中加载上面定义的类

我刚开始使用这个Mono和.NET的东西,在阅读了一些关于F#之后,我决定尝试在F#和MonoGame上关注这个简单的游戏教程:

http://bruinbrown.wordpress.com/2013/10/06/making-a-platformer-in-f-with-monogame/

在整理出我从博客上复制粘贴的代码的许多语法错误之后,我得到了以下代码:

module desnovro

open Microsoft.Xna.Framework
open Microsoft.Xna.Framework.Graphics

type Game1 () as x =
    inherit Game()

    do x.Content.RootDirectory <- "Content"
    let graphics = new GraphicsDeviceManager(x)
    let mutable spriteBatch = Unchecked.defaultof<SpriteBatch>

    override x.Initialize() =
        do spriteBatch <- new SpriteBatch(x.GraphicsDevice)
        do base.Initialize()
        ()

    override x.LoadContent() =
        ()

    override x.Update (gameTime) =
        ()

    override x.Draw (gameTime) =
        do x.GraphicsDevice.Clear Color.CornflowerBlue
        ()

[<EntryPoint>]
let main argv =
    use g = new Game1()
    g.Run()
    printfn "Desnovro!!!"
    0
Run Code Online (Sandbox Code Playgroud)

在MonoDevelop解决方案中,我创建了一个F#项目,其中引用了:

  • FSharp.Core
  • 系统
  • System.Core程序
  • Tao.Sdl
  • MonoGame.Framework.Linux
  • OpenTK …

.net mono f# monodevelop monogame

5
推荐指数
1
解决办法
542
查看次数

GCC用于STL的默认分配器是什么?

根据这个链接,gcc提供了许多有趣的内存分配器,可以与STL容器一起使用,但是如果我在创建std :: list时没有指定一个,那么默认使用它.

c++ gcc

4
推荐指数
1
解决办法
1990
查看次数

为什么这个程序抛出'std :: system_error'?

可能重复:
为什么这个简单的std :: thread示例不起作用?

码:

#include <iostream>
#include <thread>

void f()
{
  std::cout << "hi thread" << std::endl;
}

int main()
{
  std::thread t(f);
  std::cout << "hi" << std::endl;
  t.join();
}
Run Code Online (Sandbox Code Playgroud)

问题:

$ g++ -o thread_test thread_test.cpp -std=c++0x
$ ./thread_test         
terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted
Abortado
Run Code Online (Sandbox Code Playgroud)

"Abortado"在我的语言环境中意为"中止".

c++ c++11 stdthread

4
推荐指数
1
解决办法
1445
查看次数

具体的模乘算法

我有3个大的64位数字:A,B和C.我想计算:

(A x B) mod C
Run Code Online (Sandbox Code Playgroud)

考虑到我的寄存器是64位,即写入a * b实际产生(A x B)mod2⁶⁴.

最好的方法是什么?我在C编码,但在这种情况下不认为语言是相关的.


在获得指向此解决方案的评论之后:

(a * b) % c == ((a % c) * (b % c)) % c
Run Code Online (Sandbox Code Playgroud)

让我具体一点:这不是一个解决方案,因为((a%c)*(b%c))可能仍然大于2⁶⁴,寄存器仍会溢出并给我错误的答案.我会:

(((A mod C)x(B mod C))mod2⁶⁴)mod C.

c algorithm math modular-arithmetic

4
推荐指数
1
解决办法
1489
查看次数

在代码中查找可变长度数组

当我的输入大小足够大时,分段错误萌芽,在项目中使用可变长度数组.我想删除它们,如何让GCC显示它找到的可变长度数组的每个声明?

我已经尝试过使用-Wstack-usage=1000和过滤消息warning: stack usage might be unbounded,但这给了我功能,而不是声明.有没有更好的办法?

c gcc gcc-warning variable-length-array

4
推荐指数
1
解决办法
116
查看次数

如何在发起TCP/IP连接时设置本地IP?

使用Linux和glibc,当发起TCP/IP连接(在套接字上调用connect())时,如何明确选择我想要从哪个IP本地地址发起该连接,前提是我有多个接口(带有从哪里可以到达远程主机的不同IP?

是否可以这样做,或者总是由操作系统IP堆栈自动选择路由?

c linux glibc

3
推荐指数
1
解决办法
195
查看次数

Socket发送并发保证

如果我在两个进程(或两个线程)之间共享一个套接字,并且在这两个进程中我尝试发送阻塞的大消息(大于下划线协议缓冲区),是否保证两个消息将按顺序发送?或者消息可以在内核中交错?

我主要对TCP over IP行为感兴趣,但知道它是否根据socket的协议而变化会很有趣.

sockets linux

3
推荐指数
1
解决办法
1822
查看次数

在同一表达式内表达中使用副作用的结果是否安全?

请考虑以下代码:

int f(int a, int b, int *c) {
    *c = a + b;
    return *c > 0;
}

void check(int a, int b) {
    int c;
    if(f(a, b, &c) && c < 10) {
        puts("sum is in range [1, 9]");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果&&评估了第二部分,是否c保证通过函数调用保存分配给它的值f(a, b, &c)?此行为是否从C更改为C++?

c c++ language-lawyer

3
推荐指数
1
解决办法
116
查看次数

我可以同时从多个线程使用 VkDevice 吗?

特别是,我可以同时创建管道、分配设备内存并从同一 VkDevice 创建图像和缓冲区吗?

规格中的哪里指定了这一点?

vulkan

3
推荐指数
1
解决办法
1559
查看次数

在OpenGL中浏览超球面

也许这适合math.stackexchange.com,但由于我在OpenGL中编程,我会在这里问一下.

我有一个宇宙飞船游戏的想法,世界被限制在4-D超球面(也称为3球体)的表面.因此,从内部看,它看起来像一个三维世界,但通过向各个方向导航,我永远不会离开3球的有限体积.

为了将3-shpere表示为"平坦的"3-D空间,我使用立体投影,它作为GLSL着色器实现起来非常简单,只需要将输入矢量除以1减去其w坐标.

为了表示对象的顶点,我使用归一化的4d向量,使得x 2 + y 2 + z 2 + w 2 = 1,从而将它们保持在3球内.

要解决的第一个问题是轮换.但我很快就发现普通的三维旋转矩阵足以在3d投影中围绕观察者旋转世界,因为它不会弄乱w坐标(就像围绕z轴旋转一个球体也会旋转它立体投影).

然后我发现沿着w轴旋转相当于3d投影内的平移(只是不可交换,就像"平面"空间上的普通3d平移),然后我可以通过使用简单的绕轴旋转矩阵沿着轴平移(x',y')=(x*cos a - y*sin a,x*sin a + y*cos a),但是w与另一个轴一起变化.

这是我到目前为止所得到的,根据观察者从投影所面对的位置,我无法弄清楚如何向前导航.我可以应用逆变换来导出观察者在超球面坐标中面对的标准化4-D向量(称为F),但我不知道如何通过使用4x4矩阵在该方向上导航(OpenGL中的最佳值) ).我可以考虑一个hackish解决方案:对于每个顶点V,做V'= normalize(d*F + V),其中d是向前移动的距离(在一些奇怪的单位我不能精确).这种方式仅适用于较小的d值,d与角度变化之间没有直接关系.

因此问题是:如何向前移动(使用4x4矩阵变换)在4-D超球面?

opengl

2
推荐指数
1
解决办法
816
查看次数