Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

Bài 1:

#include <GL/glut.h>
#include <stdlib.h> //sử dụng lệnh exit
unsigned char pressedkey = 'a'; //Nếu là a thì tô lại nền, Nếu là b thì vẽ lại đường
void OnKeyDown(unsigned char key, int x, int y)
{
pressedkey = key;
if (key == 27)
exit(-1);
else
glutPostRedisplay(); //thực hiện hàm hiển thị display
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
if (pressedkey == 'a' || pressedkey == 'A') {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glColor3f(0.0f, 1.0f, 0.0f);
}
else if (pressedkey == 'b' || pressedkey == 'B') {
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glColor3f(1.0f, 0.0f, 0.0f);
}
glBegin(GL_POLYGON);
glVertex2i(25, 25);
glVertex2i(75, 25);
glVertex2i(75, 75);
glVertex2i(25, 75);
glEnd();
glFlush();
}
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitWindowSize(500, 500);
glutCreateWindow("My App!");
glutDisplayFunc(display);
glutKeyboardFunc(OnKeyDown);
gluOrtho2D(-250.0, 250.0, -250.0, 250.0);
glutMainLoop();
}

Bài 2:
#include <GL/glut.h>
int x0 = -1000, x1 = -800;
void idle() {
//x0 += 1; x1 += 1; //ok
glutPostRedisplay();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2i(x0, -200);
glVertex2i(x1, -200);
glVertex2i(x0, 200);
glEnd();
glFlush();
x0 -= 1; x1 -= 1;
}
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutCreateWindow("My App!");
glutDisplayFunc(display);
glutIdleFunc(idle);
gluOrtho2D(-1000.0, 1000.0, -1000.0, 1000.0);
glutMainLoop();
}

You might also like