码迷,mamicode.com
首页 > 其他好文 > 详细

SDL2+OpenGL (2)绘制立体图形

时间:2016-05-22 18:25:44      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

绘制正四面体,即从四个面依次绘制三角形,其他立体图形方法类似

技术分享

 1  #include <GL/glew.h>
 2  #include <SDL2/SDL.h>
 3  #include <SDL2/SDL_opengl.h>
 4  
 5  bool quit;
 6  SDL_Window* window;
 7  SDL_GLContext glContext;
 8  SDL_Event sdlEvent;
 9  GLfloat     rtri=0;
10  bool Init()
11  {
12      SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
13      SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
14      SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,24);
15      SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
16      SDL_Init(SDL_INIT_EVERYTHING);
17      window = SDL_CreateWindow("SDL+OpenGL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,400,300,SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
18      glContext = SDL_GL_CreateContext(window);
19      SDL_GL_SetSwapInterval(1);
20      glewInit();
21  }
22  void Draw()
23  {
24      rtri++;
25      if(rtri==360)
26          rtri=0;
27      glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
28      glLoadIdentity();
29      glScaled(1.0f/10,1.0f/10,1.0f/10);
30  
31      glRotatef(rtri,0.0f,1.0f,0.0f);
32      glBegin(GL_TRIANGLES);
33          glColor3f(1.0f,0.0f,0.0f);
34          glVertex3f( 0.0f, 4.0f, 0.0f);
35          glColor3f(0.0f,1.0f,0.0f);
36          glVertex3f(-4.0f,-4.0f, 4.0f);
37          glColor3f(0.0f,0.0f,1.0f);
38          glVertex3f( 4.0f,-4.0f, 4.0f);
39          glColor3f(1.0f,0.0f,0.0f);
40          glVertex3f( 0.0f, 4.0f, 0.0f);
41          glColor3f(0.0f,0.0f,1.0f);
42          glVertex3f( 4.0f,-4.0f, 4.0f);
43          glColor3f(0.0f,1.0f,0.0f);
44          glVertex3f( 4.0f,-4.0f, -4.0f);
45          glColor3f(1.0f,0.0f,0.0f);
46          glVertex3f( 0.0f, 4.0f, 0.0f);
47          glColor3f(0.0f,1.0f,0.0f);
48          glVertex3f( 4.0f,-4.0f, -4.0f);
49          glColor3f(0.0f,0.0f,1.0f);
50          glVertex3f(-4.0f,-4.0f, -4.0f);
51          glColor3f(1.0f,0.0f,0.0f);
52          glVertex3f( 0.0f, 4.0f, 0.0f);
53          glColor3f(0.0f,0.0f,1.0f);
54          glVertex3f(-4.0f,-4.0f,-4.0f);
55          glColor3f(0.0f,1.0f,0.0f);
56          glVertex3f(-4.0f,-4.0f, 4.0f);
57      glEnd();
58  
59      SDL_GL_SwapWindow(window);
60  }
61  int main(int argc, char *argv[])
62  {
63      quit = false;
64      Init();
65      while (!quit)
66      {
67          while(SDL_PollEvent(&sdlEvent))
68          {
69              if(sdlEvent.type == SDL_QUIT)
70              {
71                  quit = true;
72              }
73          }
74          Draw();
75          SDL_Delay(16);
76      }
77      SDL_DestroyWindow(window);
78      window = NULL;
79      SDL_Quit();
80      return 0;
81  }

 

SDL2+OpenGL (2)绘制立体图形

标签:

原文地址:http://www.cnblogs.com/CodeMIRACLE/p/5517209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!