SDL程序的编译

6220阅读 0评论2012-06-20 runningdark
分类:C/C++

如何编译:
例子中的代码同时引用了SDL和GL库,需要通过 sdl-config --lib --cflags 或-lSDL 加入SDL库 , -lGL 加入GL库

引用:
引用: http://pbeblog.wordpress.com/2009/02/16/compile-sdlopengl-applications-using-g/
g++ sourcefile.cpp -o output -lSDL -lGL 或者
g++ sourcefile.cpp -o output `sdl-config --libs --cflags` -lGL -lGLU

Sample code:
引用:
这段代码是画一个圆。在ubuntu下运行成功

点击(此处)折叠或打开

  1. // g++ me.cpp -lSDL -lGL

  2. #include <math.h>
  3. #include <GL/gl.h>
  4. #include <SDL/SDL.h>

  5. #define RAD2DEG 0.0174532925

  6. void init(int width, int height)
  7. {
  8.     // Initialize SDL
  9.     const SDL_VideoInfo* info = NULL;
  10.     SDL_Init(SDL_INIT_VIDEO);
  11.     info = SDL_GetVideoInfo();    
  12.     int vidFlags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER;
  13.     if (info->hw_available) {vidFlags |= SDL_HWSURFACE;}
  14.     else {vidFlags |= SDL_SWSURFACE;}
  15.     SDL_SetVideoMode(width, height, info->vfmt->BitsPerPixel, vidFlags);

  16.     // Initialize OpenGL for 2d
  17.     glViewport( 0, 0, width, height );
  18.     glMatrixMode( GL_PROJECTION );
  19.     glOrtho( 0, width, height, 0, -1, 1 );
  20.     glMatrixMode( GL_MODELVIEW );
  21.    glDisable(GL_DEPTH_TEST);
  22. }

  23. void glCircle(GLint x, GLint y, GLint r)
  24. {
  25.    float step = 360.0 / (2.0*M_PI*r);
  26.    glPushMatrix();
  27.    glTranslatef(x, y, 0);
  28.    glBegin(GL_TRIANGLE_FAN);
  29.    glVertex2i(0, 0);
  30.    for(float i=0; i<360; i+=step)
  31.    {
  32.       glVertex2i((GLint)(cos(RAD2DEG*i)*r), (GLint)(sin(RAD2DEG*i)*r));
  33.    }
  34.    glEnd();
  35.    glPopMatrix();
  36. }

  37. int main()
  38. {
  39.    init(640, 480);
  40.    glClear(GL_COLOR_BUFFER_BIT);
  41.     glLoadIdentity();
  42.    glCircle(200, 200, 100);
  43.     SDL_GL_SwapBuffers();
  44.     SDL_Delay(2000);
  45. }



上一篇:vim颜色和sample上的不同
下一篇:用SDL_draw绘制圆形和矩形:从安装SDL_draw到编译执行程序