sdl - 为什么我得到 : Error: undefined identifier SDL_SetVideoMode when compiling SDL2 on DMD2

标签 sdl d

我找不到运行 SDL2 的代码示例,当我尝试使用 Derelict SDL2 在 DMD2 上编译以下代码时,出现上述错误。有一套新的初始化SDL2的程序吗?

代码是:

import std.stdio;
import derelict.sdl2.sdl;
import derelict.sdl2.types;
import derelict.opengl3.gl3;

private import EventHub;

pragma(lib, "DerelictUtil.lib");
pragma(lib, "DerelictGL3.lib");
pragma(lib, "derelictSDL2.lib");

bool running=true;
SDL_Surface *screen;

class App{
    private EventHub ehub;
    private bool virgin=true;
    private int w=1024, h=768, bpp=24;
    private int flags=SDL_GL_DOUBLEBUFFER;//| SDL_FULLSCREEN

    public void init(){
        initSDL();
    }

    private bool initSDL(){
        if(SDL_Init(SDL_INIT_VIDEO)<0){
            SDL_Quit();
            writeln("Error initializing SDL_Video");
            writeln(SDL_GetError());
            return false;
        }
        writeln("fred");

        SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
        SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
        SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

        screen=SDL_SetVideoMode(w, h, bpp, flags);

        return true;
    }
}

void main(){
    try{
        DerelictGL3.load();
    }catch(Exception e){
        writeln("Error loading GL3");
    }
    try{
        DerelictSDL2.load();
    }catch(Exception e){
        writeln("Error loading SDL");
    }

    App a=new App();
    a.init();
}

如果 screen=SDL_SetVideoMode(w, h, bpp, flags),程序将打印“fred”;语句已被注释掉,因此 SDL 正在加载并初始化正常。有人有任何线索吗?

最佳答案

SDL 1.3(完成后将作为版本 2 发布)没有真正的 SDL_SetVideoMode 函数。 (文档提到了兼容性 stub ,但 Delelict 中可能没有它。)请参阅 migration guide了解更多详情。

关于sdl - 为什么我得到 : Error: undefined identifier SDL_SetVideoMode when compiling SDL2 on DMD2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158956/

相关文章:

d - 如何理解betterC模式下可以使用哪些函数?

image - 在 D 中创建新的 .png 图像

vim:将扩展与语言相关联

c++ - 将 SDL 表面传递给函数

c - gcc 不会编译 SDL C 程序(对 SDL 函数的 undefined reference )

c++ - 为什么我的子类被认为是抽象类?

linux - 64 位 Linux 上的 SDL 和 nasm

编译器能否在没有有关纯度的类型信息的情况下自动检测纯函数?

c++ - 如何检测何时释放 key (SDL 2.0)

class - 调用不可变类的成员函数