Khắc phục lỗi effect chạy nhanh hơn chữ trong aegisub

Khắc phục lỗi effect chạy nhanh hơn chữ trong aegisub

include <gl/glut.h>

GLfloat a=0.0;

void init(){

glClearColor(0, 0, 0, 1);

glEnable(GL_DEPTH_TEST);

}

void cube(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)

{

gluLookAt(0, 5, 20, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); // quan sat

glPushMatrix();

//glMatrixMode(GL_MODELVIEW);

//glLoadIdentity();

glRotatef(a,0,1,0);

glBegin(GL_QUADS);

//truoc

glColor3f(1,0.3,0.3);

glVertex3f(x1, y1, 0);

glVertex3f(x2, y2, 0);

glVertex3f(x3, y3, 0);

glVertex3f(x4, y4, 0);

//top

glColor3f(1, 1, 1);

glVertex3f( x1, y1, 0);

glVertex3f( x2, y2, 0);

glVertex3f( x2, y2, -3);

glVertex3f( x1, y1, -3);

//right

glColor3f(0,1,0);

glVertex3f(x1, y1, 0);

glVertex3f(x1, y1, -3);

glVertex3f(x4, y4, -3);

glVertex3f(x4, y4, 0);

//left

glColor3f(0,0.8,1);

glVertex3f(x2, y2, 0);

glVertex3f(x2, y2, -3);

glVertex3f(x3, y3, -3);

glVertex3f(x3, y3, 0);

//bottom

glColor3f(1, 0, 0);

glVertex3f(x3, y3, 0);

glVertex3f(x3, y3, -3);

glVertex3f(x4, y4, -3);

glVertex3f(x4, y4, 0);

//back

glColor3f(1, 1, 0);

glVertex3f(x1, y1, -3);

glVertex3f(x2, y2, -3);

glVertex3f(x3, y3, -3);

glVertex3f(x4, y4, -3);

glEnd();

glPopMatrix();

glFlush();

//a+=0.01;

}

void initRendering()

{

glEnable(GL_DEPTH_TEST);

}

void Ide()

{

glutPostRedisplay();

}

void reshape(int w, int h)

{

if (h==0)

{

h=1;

}

float ratio=(float)w/(float)h;

glViewport(0, 0, w, h); //bien doi khung hinh

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(66.0, ratio, 0.1, 100); //phep chieu phoi canh

glMatrixMode(GL_MODELVIEW);

}

void draw()

{

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(-1,0,0);

//dau

glPushMatrix();

cube(-4,6,4,6,4,0.5,-4,0.5);

glPopMatrix();

//co

glPushMatrix();

cube(-1,0.5,1,0.5,1,0,-1,0);

glPopMatrix();

//than

glPushMatrix();

cube(-2.5,0,2.5,0,2.5,-3,-2.5,-3);

glPopMatrix();

//chan

glPushMatrix();

cube(-2,-3,-1,-3,-1,-4,-2,-4);

glPopMatrix();

glPushMatrix();

cube(2,-3,1,-3,1,-4,2,-4);

glPopMatrix();

//banchan

glPushMatrix();

cube(-3.5,-4,-0.5,-4,-0.5,-6,-3.5,-6);

glPopMatrix();

glPushMatrix();

cube(3.5,-4,0.5,-4,0.5,-6,3.5,-6);

glPopMatrix();

//tay

glPushMatrix();

cube(-3,-0.5, -2.5,-0.5, -2.5,-1.5, -3,-1.5);

glPopMatrix();

glPushMatrix();

cube(3,-0.5, 2.5,-0.5, 2.5,-1.5, 3,-1.5);

glPopMatrix();

//canhtay

glPushMatrix();

cube(3,-0.3,4.5,-0.3, 4.5,-3.5, 3,-3.5);

glPopMatrix();

glPushMatrix();

cube(-3,-0.3, -4.5,-0.3, -4.5,-3.5, -3,-3.5);

glPopMatrix();

glutSwapBuffers();

}

//void anhsang()

//{

// glClearColor(0, 0, 0, 0);

//

// glEnable(GL_LIGHTING);

// glEnable(GL_LIGHT0);

// glEnable(GL_DEPTH_TEST);

//

// GLfloat light_pos[]={1,0.5,1, 1.0};

// glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

//

// GLfloat ambient[]={0,0,1, 1.0};

// glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);

//

// GLfloat diffuse[]={1,1, 1.0};

// glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);

//

// GLfloat specular[]={1 , 1 , 1};

// glLightfv(GL_LIGHT0, GL_SPECULAR, specular);

//}

int main()

{

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE|GLUT_DEPTH );

glutInitWindowSize(555, 555);

glutInitWindowPosition(333,111);

glutCreateWindow(” ACB Ten”);

initRendering();

init();

glutIdleFunc(Ide);

/*anhsang();*/

glutReshapeFunc(reshape);

glutDisplayFunc(draw);

glutMainLoop();

}