SDL和OpenGL的完美组合。终于合体了。但是坐标系还是有问题。

来源:互联网 发布:手机防热软件 编辑:程序博客网 时间:2024/05/01 05:47

根据我一贯的喜好,还是使用DEV C++。跳过SDL的配置。

OpenGL的头文件和动态链接库已经包含到DEV C中了。下面是一个例子一看什么都明白了。

 

#include <GL/gl.h>
#include <SDL/SDL.h>
bool running=true;
float y=0.0;

void initGL()
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_SetVideoMode(600,300,16,SDL_OPENGL);
   
}
void destroyGL()
{
    SDL_Quit();
}
void draw()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glRotatef(y,0,1,0);
    glBegin(GL_TRIANGLES);
        glColor3f(1,0,0);
        glVertex3f(0,0,0);
        glColor3f(0,1,0);
        glVertex3f(1,0,0);
        glColor3f(0,0,1);
        glVertex3f(0,1,0);
    glEnd();

    SDL_GL_SwapBuffers();

}
void quit()
{
    running=false;
}
void onKeyDown(const SDL_Event& event)
{
    switch(event.key.keysym.sym)
    {
    case SDLK_ESCAPE:
    quit();
    break;
    case SDLK_LEFT:
    y+=0.1;
    break;
    case SDLK_RIGHT:
    y-=0.1;
    break;

   
    }
}
void loop()
{
    SDL_Event event;
    while(running)
    {
        while(SDL_PollEvent(&event))
        {
            switch(event.type)
            {
            case SDL_QUIT:
                quit();
            break;
            case SDL_KEYDOWN:
                onKeyDown(event);
            break;
            }
        }
        draw();
        SDL_Delay(50);
    }

}
int main(int argc,char* argv[])
{
    initGL();
    loop();
    destroyGL();   
    return 0;
}

在此基础上,我们就可以使用SDL和OpenGL合体去做我们的游戏了。

哦 忘了发截图: