Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在Allegro 5中启用抗锯齿功能会导致对象旋转并改变位置(可能是由于内存错误)?_C_Graphics_Allegro_Allegro5 - Fatal编程技术网

C 在Allegro 5中启用抗锯齿功能会导致对象旋转并改变位置(可能是由于内存错误)?

C 在Allegro 5中启用抗锯齿功能会导致对象旋转并改变位置(可能是由于内存错误)?,c,graphics,allegro,allegro5,C,Graphics,Allegro,Allegro5,我在早期阶段有一个Allegro项目,我有一个代表宇宙飞船的结构(正如你可能想象的,这是我宇宙飞船游戏的基本部分)。该结构定义为: typedef struct sc_ship_s { // Linked List attributes struct sc_ship_s *ll_prev; struct sc_ship_s *ll_next; // Informational attributes char name[256]; char ship

我在早期阶段有一个Allegro项目,我有一个代表宇宙飞船的结构(正如你可能想象的,这是我宇宙飞船游戏的基本部分)。该结构定义为:

typedef struct sc_ship_s {
    // Linked List attributes
    struct sc_ship_s *ll_prev;
    struct sc_ship_s *ll_next;
    // Informational attributes
    char name[256];
    char ship_class[256];

    // Physical attributes
    //  Position and velocity
    float posx, posy;
    float velx, vely;
    //  Rotation, in degrees, and rotational velocity, in deg. per second
    float rotation;
    float rotvel;

    // Rendering attributes
    sc_shiprender_t *render_attributes;

} sc_ship_t;
在没有抗锯齿的情况下,我有一个简单的演示程序可以运行,这样我就可以测试缩放、船舶更新等等。它可以完美地工作,在一条线上生成交替的彩色船舶:

但是,当我添加这两行(不只是其中一行;必须同时添加两行)以启用抗锯齿时:

al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS, 2, ALLEGRO_SUGGEST);
al_set_new_display_option(ALLEGRO_SAMPLES, 4, ALLEGRO_SUGGEST);
看起来是这样的:

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 266.400085 Dy: 286.000000 Deg: 0.000000 Sca: 1.000000
DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 243.599915 Dy: 260.400085 Deg: -nan Sca: 1.000000

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 129.199921 Dy: 131.800079 Deg: 2530009767.279658 Sca: 1.000000

正如你所看到的,一艘船失踪了,它们之间的距离不正确,有几艘船有旋转速度,还有一艘船的旋转已经设置为230度左右。我生成它们的代码还没有设置旋转或旋转速度

我怀疑某种内存损坏,因为我的调试输出应该充满这样的行:

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 266.400085 Dy: 286.000000 Deg: 0.000000 Sca: 1.000000
DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 243.599915 Dy: 260.400085 Deg: -nan Sca: 1.000000

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 129.199921 Dy: 131.800079 Deg: 2530009767.279658 Sca: 1.000000
而是充满了这样的线条:

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 266.400085 Dy: 286.000000 Deg: 0.000000 Sca: 1.000000
DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 243.599915 Dy: 260.400085 Deg: -nan Sca: 1.000000

DEBUG src/ship.c:86: Drawing a ship: CX: 16 CY: 16 Dx: 129.199921 Dy: 131.800079 Deg: 2530009767.279658 Sca: 1.000000
上次我检查时,无论是
-nan
还是
2530009767.279658
都不等于0,在这个特定的演示中,唯一的值Deg(旋转)应该是


请帮忙?我完全被难住了。

关于这两行:
struct sc\u ship\u s*ll\u prev;结构sc_ship_s*ll_next
是否有某些原因将两个字段上的前缀
ll\uu
与代码混淆?如果没有实际代码,我们只能猜测。鉴于信息匮乏,最有可能的原因是这些字段没有被删除initialized@user3629249没有特别的原因,没有;对我来说,一眼就能看出链表操作正在进行,这只是一种记忆法。创建每艘新船时,相关属性初始化为0。我会把代码贴出来,但是它;超过300行。如果无法创建最小值,。干净地编译仍然显示问题的代码,然后建议发布到其中一个代码站点。我怀疑我们对实际代码没有任何帮助,因此我们可以编译/链接/运行它以调试它。。如果正在使用任何特殊库,请务必发布指向这些库的链接,包括以下两行:
struct sc\u ship\u s*ll\u prev;结构sc_ship_s*ll_next
是否有某些原因将两个字段上的前缀
ll\uu
与代码混淆?如果没有实际代码,我们只能猜测。鉴于信息匮乏,最有可能的原因是这些字段没有被删除initialized@user3629249没有特别的原因,没有;对我来说,一眼就能看出链表操作正在进行,这只是一种记忆法。创建每艘新船时,相关属性初始化为0。我会把代码贴出来,但是它;超过300行。如果无法创建最小值,。干净地编译仍然显示问题的代码,然后建议发布到其中一个代码站点。我怀疑我们对实际代码没有任何帮助,因此我们可以编译/链接/运行它以调试它。。如果正在使用任何特殊库,请确保发布指向这些库的链接