2012-04-15 3 views
1

SDL2를 실행하는 코드의 예는 찾을 수 없으며 Derelict SDL2를 사용하여 DMD2에서 다음 코드를 컴파일하려고하면 위의 오류가 발생합니다. SDL2를 초기화하는 새로운 절차가 있습니까?오류 : 정의되지 않은 식별자 : DMD2에서 SDL2를 컴파일 할 때의 SDL_SetVideoMode

코드는 :

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이로드되고 초기화됩니다. 누구든지 단서가 있습니까?

답변

5

SDL 1.3 (완료되면 버전 2로 출시됨)에는 실제 SDL_SetVideoMode 기능이 없습니다. (설명서에는 호환성 스텁이 언급되어 있지만 실제로는 Derelict에는 없습니다.) 자세한 내용은 migration guide을 참조하십시오.