鱼C论坛

 找回密码
 立即注册
查看: 2513|回复: 1

修改一下如何将sdl1.2变成sdl2 打印一个3d旋转的正方体

[复制链接]
发表于 2017-11-11 23:17:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
//GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
//#include <GL/glut.h>

#define LARGEUR 640
#define LONGUEUR 480

void dessiner();

double angleX, angleZ;

int main(int argc, char *argv[])
{
        SDL_Init(SDL_INIT_VIDEO);
        SDL_WM_SetCaption("The 3D Cube of the dead !!!",NULL);
        SDL_SetVideoMode(LARGEUR, LONGUEUR, 32, SDL_OPENGL);
        SDL_EnableKeyRepeat(10,10);
        //SDL_ShowCursor(false);
       
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(70,(double)LARGEUR/LONGUEUR,1,1000);
        glEnable(GL_DEPTH_TEST);

        dessiner();

        bool continuer = true;
        SDL_Event event;

        Uint32 last_time = SDL_GetTicks();
        Uint32 current_time,ellapsed_time, start_time;        
       
        while (continuer)
        {
                start_time = SDL_GetTicks();
                while(SDL_PollEvent(&event))
                {
                switch(event.type)
                {
                        case SDL_QUIT:
                                continuer = false;
                                break;
                        case SDL_KEYDOWN:
                                switch(event.key.keysym.sym)
                                {
                                        /*case SDLK_RIGHT:
                                                angle = 1;
                                                break;
                                        case SDLK_LEFT:
                                                angle = -1;
                                                break;*/
                                        /*case SDLK_UP:
                                                posY += 5;
                                                break;
                                        case SDLK_DOWN:
                                                posY -= 5;
                                                break;*/
                                }
                                break;
                        /*case SDL_MOUSEMOTION:
                                posX = event.motion.x-LARGEUR/2;
                                posY = LONGUEUR/2-event.motion.y;
                                break;*/
                }
                }
                current_time = SDL_GetTicks();
                ellapsed_time = current_time - last_time;
                last_time = current_time;

                angleZ += 0.05 * ellapsed_time;
                angleX += 0.05 * ellapsed_time;

                dessiner();

                ellapsed_time = SDL_GetTicks() - start_time;
                if (ellapsed_time < 10)
                {
                        SDL_Delay(10 - ellapsed_time);
                }
        }

        SDL_Quit();
        return 0;
}

void dessiner()
{
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity( );

        gluLookAt(3,4,2,0,0,0,0,0,1);

        glRotated(angleX, 1, 0, 0);
        glRotated(angleZ, 0, 0, 1);

        glBegin(GL_QUADS);
       
        glColor3ub(255,0,0);
        glVertex3d(1,1,1);
        glVertex3d(1,1,-1);
        glVertex3d(-1,1,-1);
        glVertex3d(-1,1,1);

        glColor3ub(0,255,0);
        glVertex3d(1,-1,1);
        glVertex3d(1,-1,-1);
        glVertex3d(1,1,-1);
        glVertex3d(1,1,1);

        glColor3ub(0,0,255);
        glVertex3d(-1,-1,1);
        glVertex3d(-1,-1,-1);
        glVertex3d(1,-1,-1);
        glVertex3d(1,-1,1);

        glColor3ub(255,255,0);
        glVertex3d(-1,1,1);
        glVertex3d(-1,1,-1);
        glVertex3d(-1,-1,-1);
        glVertex3d(-1,-1,1);
         
        glColor3ub(0,255,255);
        glVertex3d(1,1,-1);
        glVertex3d(1,-1,-1);
        glVertex3d(-1,-1,-1);
        glVertex3d(-1,1,-1);

        glColor3ub(255,0,255);
        glVertex3d(1,-1,1);
        glVertex3d(1,1,1);
        glVertex3d(-1,1,1);
        glVertex3d(-1,-1,1);

        glEnd();
       
        glFlush();
        SDL_GL_SwapBuffers();
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-12 20:18:39 | 显示全部楼层
求大神指点指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 15:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表