Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2010, 22:42   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию SDL OpenGL Вращение фигуры

Народ помогите.
Нужно сделать так чтоб фигура вращалась при нажатии клавиш (стрелок)
Вот код
Код:
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#if defined(__APPLE__) && defined(__MACH__)
#include <OpenGL/gl.h>  // Header File For The OpenGL32 Library
#include <OpenGL/glu.h> // Header File For The GLu32 Library
#else
#include <GL/gl.h>      // Header File For The OpenGL32 Library
#include <GL/glu.h>     // Header File For The GLu32 Library
#endif
#include "SDL.h"
 
/* rotation angle for the triangle. */
float rtri = 0.0f;
 
/* rotation angle for the quadrilateral. */
float rquad = 0.0f;
 
/* A general OpenGL initialization function.  Sets all of the initial parameters. */
void InitGL(int Width, int Height)              // We call this right after our OpenGL window is created.
{
  glViewport(0, 0, Width, Height);
  glClearColor(0.0f, 0.0f, 0.0f, 0.0f);         // This Will Clear The Background Color To Black
  glClearDepth(1.0);                            // Enables Clearing Of The Depth Buffer
  glDepthFunc(GL_LESS);                         // The Type Of Depth Test To Do
  glEnable(GL_DEPTH_TEST);                      // Enables Depth Testing
  glShadeModel(GL_SMOOTH);                      // Enables Smooth Color Shading
 
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();                             // Reset The Projection Matrix
 
  gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);     // Calculate The Aspect Ratio Of The Window
 
  glMatrixMode(GL_MODELVIEW);
}
 
/* The main drawing function. */
void DrawGLScene()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);           // Clear The Screen And The Depth Buffer
  glLoadIdentity();                             // Reset The View
 
  glTranslatef(-1.5f,0.0f,-6.0f);               // Move Left 1.5 Units And Into The Screen 6.0
        
  glRotatef(rtri,0.0f,1.0f,0.0f);               // Rotate The Triangle On The Y axis 
  // draw a triangle (in smooth coloring mode)
  glBegin(GL_POLYGON);                          // start drawing a polygon
  glColor3f(1.0f,0.0f,0.0f);                    // Set The Color To Red
  glVertex3f( 0.0f, 1.0f, 0.0f);                // Top
  glColor3f(0.0f,1.0f,0.0f);                    // Set The Color To Green
  glVertex3f( 1.0f,-1.0f, 0.0f);                // Bottom Right
  glColor3f(0.0f,0.0f,1.0f);                    // Set The Color To Blue
  glVertex3f(-1.0f,-1.0f, 0.0f);                // Bottom Left  
  glEnd();                                      // we're done with the polygon (smooth color interpolation)
 
                        
 
  rtri+=15.0f;                                  // Increase The Rotation Variable For The Triangle
  r                                     // Decrease The Rotation Variable For The Quad 
 
  // swap buffers to display, since we're double buffered.
  SDL_GL_SwapBuffers();
}
 
int main(int argc, char **argv) 
{  
  int done;
 
  /* Initialize SDL for video output */
  if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
    fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError());
    exit(1);
  }
 
  /* Create a 640x480 OpenGL screen */
  if ( SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL ) {
    fprintf(stderr, "Unable to create OpenGL screen: %s\n", SDL_GetError());
    SDL_Quit();
    exit(2);
  }
 
  /* Set the title bar in environments that support it */
  SDL_WM_SetCaption("FrosT", NULL);
 
  /* Loop, drawing and checking events */
  InitGL(640, 480);
  done = 0;
  while ( ! done ) {
    DrawGLScene();
 
    /* This could go in a separate function */
    { SDL_Event event;
      while ( SDL_PollEvent(&event) ) {
        if ( event.type == SDL_QUIT ) {
          done = 1;
        }
        if ( event.type == SDL_KEYDOWN ) {
          if ( event.key.keysym.sym == SDLK_ESCAPE ) {
            done = 1;
          }
        }
      }
    }
  }
  SDL_Quit();
  return 1;
}
revaldo666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++(SDL, OpenGL) revaldo666 Visual C++ 1 15.07.2010 20:09
Visual C++ (SDL, openGL) revaldo666 Qt и кроссплатформенное программирование С/С++ 0 15.07.2010 17:36
Win32Api и SDL revaldo666 Win Api 2 05.07.2010 17:49
Вращение фигуры vandrouny Общие вопросы Delphi 3 22.05.2010 21:16
SDL, текст Plobzik Общие вопросы C/C++ 9 23.04.2010 23:11