/* * A test case to demonstrate Mesa bug 9134. */ #include #include #include #include #include #include #define X1 -1.0 #define X2 1.0 #define Y1 -1.0 #define Y2 1.0 #define display display_normal #define POW(x, y) (float)pow((double)(x), (double)(y)) #define ABS(x) (((x) < 0.0) ? -(x) : (x)) #define ZERO 1.0 / POW(2.0, 13.0) void display_normal(void) { GLuint lid; GLfloat buf[100]; memset(buf, 0, sizeof(buf)); glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.0); lid = glGenLists(1); glNewList(lid, GL_COMPILE_AND_EXECUTE); glPolygonMode (GL_FRONT_AND_BACK, GL_POINT); glBegin(GL_TRIANGLES); glEdgeFlag (GL_TRUE); glVertex2f(10.0, 10.0); glVertex2f(50.0, 30.0); glEdgeFlag (GL_FALSE); glVertex2f(100.0, 10.0); glEnd(); glFlush(); glEndList(); glDeleteLists(lid, 1); glReadPixels(10, 10, 1, 1, GL_RGB, GL_FLOAT, (GLvoid *)buf); if (ABS(buf[0] - 1.0) > ZERO || ABS(buf[1]) > ZERO || ABS(buf[2]) > ZERO) { assert(0); } } static void key(unsigned char k, int x, int y) { switch (k) { case 27: exit(0); break; default: return; } glutPostRedisplay(); } static void reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D (0, width, 0, height); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(200, 200); glutInitWindowPosition(100, 100); glutCreateWindow("Vertex"); glutReshapeFunc(reshape); glutDisplayFunc(display); glutKeyboardFunc(key); glutMainLoop(); return 0; }