Jump to content
GSForum - Segélyvonal

OpenGL animáció


Misusz
 Share

Recommended Posts

Misusz

Sziasztok!

 

OpenGL segítségével kellene C++ környezetben megoldanom egy mozgó jármûvet. Sajnos elméleti oktatást nem kaptunk, innen-onnan próbálom összeszedni, hogy hogyan kellene. A jármû megrajzolásáig eljutottam, csak az animálást nem tudom megoldani.

Hogyan tudnám azt elérni, hogy egy körív mentén haladjon az objektum körbe-körbe? Milyen függvényeket, utasításokat kell használni és hogyan? Erre vonatkozólag semmi segítséget sem találtam sajnos.

 

Kérem, aki tud segítsen!

Link to comment
Share on other sites

Misusz

Több napos keresgélés után sikerült megoldanom a problémát, azért leírom itt, hátha valaki hozzám hasonló hasznát veszi még.

A jármű helyett itt csak egy sárga téglatestet jelenítettem meg a kód rövidítése miatt.

 

#include <GL/glut.h>

float rota=-30;

void display(void){
     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
     glRotated(30,1,0,0);
     glRotated(rota,0,1,0);
     
     glColor3d(1,1,0);
     glTranslated(40,0,0);
     glScalef(13,13,26);
     glutSolidCube(1);

     glFlush();
     glutSwapBuffers();
}

void init(void){
    glClearColor(0.2f, 0.9f,0.3f, 1.0f);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-70,70,-70,70,-80,40);
}

static void key(unsigned char k, int x, int y)
{
  switch (k) {
  case 27:
    exit(0);
    break;
  }
}

void Idle (void){
     rota+=0.02;
     display();
}

int main(int argc, char* argv[]){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH);
    glutInitWindowSize(400,400);
    glutInitWindowPosition(0,0);
    glutCreateWindow("Mozgo jarmu");
    glutDisplayFunc(display);
    glutIdleFunc(Idle);
    glutKeyboardFunc(key);
    init();
    glutMainLoop();
    return 0;
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...