2012-04-15 15 views
1

SDL2を実行しているコードの例が見つからず、Derelict SDL2を使用してDMD2で次のコードをコンパイルしようとすると、 SDL2を初期化するための新しい手順がありますか?エラー:未定義の識別子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(); 
} 

プログラムプリント "フレッド" 画面= SDL_SetVideoMode(フラグ、H、BPP、w)の場合;ステートメントがコメントアウトされているため、SDLがロードされ、OKが初期化されています。誰にも手がかりはありますか?

答えて

5

SDL 1.3(完了したらバージョン2としてリリースされる)には、実際のSDL_SetVideoMode関数はありません。 (ドキュメントには互換性スタブがありますが、おそらくDerelictにはありません)。詳細はmigration guideを参照してください。

関連する問題