Results 1 to 2 of 2

Thread: "Shimmering" images

  1. #1
    Junior Member Newbie
    Join Date
    Nov 2009
    Posts
    2

    "Shimmering" images

    Before I ask my question, I must say that I just started learning OpenGL and my question may look ridiculous.

    I took a sample program which renders a few 3d objects and I changed it by adding a glutIdleFunc and now the images are "shimmering". I'm pretty sure this is a newbie question and I'll be very thankful if someone can point my error.

    And here is the code:

    #include <stdlib.h>
    #include <GL/glut.h>

    int x=0;
    int y=0;

    struct point
    {
    GLfloat x, y;
    };

    point j8[] =
    {
    {-0.334818, 0.435331},
    { 0.286438, -0.393495},
    { 0.459462, 0.141540},
    {-0.414498, -0.192829},
    {-0.183790, 0.082102},
    {-0.079263, -0.317383},
    { 0.102254, 0.299133},
    { 0.164216, -0.054399}
    };

    void init()
    {
    GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 };
    GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
    GLfloat light_position[] = { 0.0, 0.0, 10.0, 1.0 };
    GLfloat lm_ambient[] = { 0.2, 0.2, 0.2, 1.0 };

    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 50.0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_DEPTH_TEST);
    glShadeModel (GL_FLAT);

    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClearAccum(0.0, 0.0, 0.0, 0.0);
    }

    void displayObjects()
    {
    GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 };
    GLfloat sphere_diffuse[] = { 0.7, 0.0, 0.7, 1.0 };

    glPushMatrix ();
    glRotatef (30.0, 1.0, 0.0, 0.0);

    glPushMatrix ();
    glTranslatef (-0.75, -0.50, 0.0);
    glRotatef (45.0+x/10, 0.0, 0.0, 1.0);
    glRotatef (45.0+y/10, 1.0, 0.0, 0.0);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, cube_diffuse);
    glScalef(2,2,.1);
    glutSolidCube (1.5);
    glPopMatrix ();

    glPushMatrix ();
    glTranslatef (0+x/100, 0+y/100, 0.0);
    glRotatef (30.0, 1.0, 0.0, 0.0);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse);
    glutSolidSphere (1.0, 16, 16);
    glPopMatrix ();

    glPopMatrix ();
    }

    #define ACSIZE 8

    void display()
    {

    GLint viewport[4];
    int count;

    glGetIntegerv (GL_VIEWPORT, viewport);

    glClear(GL_ACCUM_BUFFER_BIT);
    for (count = 0; count < ACSIZE; count++) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix ();

    glTranslatef (j8[count].x*4.5/viewport[2], j8[count].y*4.5/viewport[3], 0.0);
    displayObjects ();
    glPopMatrix ();
    glAccum(GL_ACCUM, 1.0/ACSIZE);
    }
    glAccum (GL_RETURN, 1.0);
    glFlush();
    }

    void reshape(int w, int h)
    {
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
    glOrtho (-2.25, 2.25, -2.25*h/w, 2.25*h/w, -10.0, 10.0);
    else
    glOrtho (-2.25*w/h, 2.25*w/h, -2.25, 2.25, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }

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

    void display2(int z, int zz){
    x=z;
    y=zz;
    display();
    }

    int main(int argc, char** argv)
    {
    glutInit(&amp;argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_ACCUM | GLUT_DEPTH);
    glutInitWindowSize (250, 250);
    glutInitWindowPosition (100, 100);
    glutCreateWindow (argv[0]);
    init();
    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutPassiveMotionFunc(display2);
    glutIdleFunc(display);
    glutMainLoop();
    return 0;
    }

  2. #2
    Junior Member Newbie
    Join Date
    Nov 2009
    Posts
    2

    Re: "Shimmering" images

    Found it. Thanks anyway.

Similar Threads

  1. Switching between "arcball" and "fps-style" camera rotation
    By bsabiston in forum OpenGL: Basic Coding
    Replies: 6
    Last Post: 10-31-2017, 12:37 PM
  2. egl gles2 "function is no-op" "Mesa: User error"
    By unixmania in forum OpenGL: Basic Coding
    Replies: 1
    Last Post: 09-17-2013, 05:30 AM
  3. Replies: 1
    Last Post: 10-26-2012, 02:19 AM
  4. "best" linux dist for a "Gelato" render farm?
    By ArtificialArtOfficial in forum OpenGL: Linux
    Replies: 10
    Last Post: 12-23-2007, 01:02 PM
  5. "required extension" and "core addition"
    By wycwang in forum OpenGL ES
    Replies: 2
    Last Post: 09-19-2007, 03:11 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Proudly hosted by Digital Ocean