我目前正在尝试DerelictSDL2(与 D 的 SDL2 库的绑定),并且我编写了一个成功加载 JPG 图像并将其显示在窗口中的代码。也就是说,当它使用 dmd 编译时。当我尝试使用 gdc (并且没有修改代码)时,它会编译但不会在运行时加载图像。
我相信我做对了:
SDL_Init(SDL_INIT_VIDEO)
然后
IMG_Init(IMG_INIT_JPG)
在那之后的某个地方
this.data = IMG_LoadTexture(Window.renderer, name.ptr)
其中Window.renderer
是(显然)SDL_Renderer*
andname.ptr
是char*
指向要加载的图像的名称。但是当使用 gdc 编译时,IMG_Load
两者IMG_LoadTexture
都返回null
,而使用 dmd 他们返回一个指向新创建的纹理的指针......
我是否忘记了其他事情(毕竟,即使没有 dmd 它也可以工作IMG_Init
)?Derelict 是否仅适用于 dmd(即使它仅与 C 函数接口)?
dmd:2.065
全球数据中心:4.9.1
编辑 :
原来问题完全不同。IMG_LoadTexture
为其第二个参数获取指向数据的指针,但name.ptr
似乎仅适用于 dmd。但是,如果我尝试使用这样的硬编码参数:
IMG_LoadTexture(renderer, "../test/res/image.jpg")
它适用于 dmd 和 gdc。