int main(int argc, char *argv[]) { // inicjalizacja biblioteki GLUT glutInit(&argc, argv); // inicjalizacja bufora ramki glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // rozmiary głównego okna programu glutInitWindowSize(550, 550); // utworzenie głównego okna programu glutCreateWindow("Zadanie 1"); // dołączenie funkcji generującej scenę 3D glutDisplayFunc(DisplayScene); // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna glutReshapeFunc(Reshape); // utworzenie podmenu - Tekstura int MenuTexture = glutCreateMenu(Menu); glutAddMenuEntry("white_skin_guy_black_hairs.tga (kompresja)", TEXTURE_LENA); glutAddMenuEntry("white_skin_guy_black_hairs.tga (bez kompresji)", TEXTURE_LENA_UNC); glutAddMenuEntry("white_skin_guy_black_hairs_gray.tga (kompresja)", TEXTURE_LENA_GRAY); glutAddMenuEntry("white_skin_guy_black_hairs_gray.tga (bez kompresji)", TEXTURE_LENA_GRAY_UNC); // utworzenie podmenu - GL_TEXTURE_COMPRESSION_HINT int MenuTextureCompressionHint = glutCreateMenu(Menu); glutAddMenuEntry("GL_FASTEST", TEXTURE_COMPRESSION_FASTEST); glutAddMenuEntry("GL_DONT_CARE", TEXTURE_COMPRESSION_DONT_CARE); glutAddMenuEntry("GL_NICEST", TEXTURE_COMPRESSION_NICEST); // utworzenie podmenu - Aspekt obrazu int MenuAspect = glutCreateMenu(Menu); #ifdef WIN32 glutAddMenuEntry("Aspekt obrazu - całe okno", FULL_WINDOW); #else glutAddMenuEntry("Aspekt obrazu - cale okno", FULL_WINDOW); #endif glutAddMenuEntry("Aspekt obrazu 1:1", ASPECT_1_1); // menu główne glutCreateMenu(Menu); glutAddSubMenu("Tekstura", MenuTexture); glutAddSubMenu("GL_TEXTURE_COMPRESSION_HINT", MenuTextureCompressionHint); glutAddSubMenu("Aspekt obrazu", MenuAspect); #ifdef WIN32 glutAddMenuEntry("Wyjście", EXIT); #else glutAddMenuEntry("Wyjscie", EXIT); #endif // określenie przycisku myszki obsługującego menu podręczne glutAttachMenu(GLUT_RIGHT_BUTTON); // utworzenie tekstur GenerateTextures(); // sprawdzenie i przygotowanie obsługi wybranych rozszerzeń ExtensionSetup(); // wprowadzenie programu do obsługi pętli komunikatów glutMainLoop(); return 0; }
int main(int argc, char *argv[]) { // inicjalizacja biblioteki GLUT glutInit(&argc, argv); // inicjalizacja bufora ramki glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // rozmiary głównego okna programu glutInitWindowSize(500, 500); // utworzenie głównego okna programu glutCreateWindow("Zadanie 1"); // dołączenie funkcji generującej scenę 3D glutDisplayFunc(Display); // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna glutReshapeFunc(Reshape); // dołączenie funkcji obsługi klawiatury glutKeyboardFunc(Keyboard); // dołączenie funkcji obsługi klawiszy funkcyjnych i klawiszy kursora glutSpecialFunc(SpecialKeys); // obsługa przycisków myszki glutMouseFunc(MouseButton); // obsługa ruchu kursora myszki glutMotionFunc(MouseMotion); // utworzenie menu podręcznego glutCreateMenu(Menu); // utworzenie podmenu - Materiał int MenuMaterial = glutCreateMenu(Menu); glutAddMenuEntry("Mosiądz", BRASS); glutAddMenuEntry("Brąz", BRONZE); glutAddMenuEntry("Polerowany brąz", POLISHED_BRONZE); glutAddMenuEntry("Chrom", CHROME); glutAddMenuEntry("Miedź", COPPER); glutAddMenuEntry("Polerowana miedź", POLISHED_COPPER); glutAddMenuEntry("Złoto", GOLD); glutAddMenuEntry("Polerowane złoto", POLISHED_GOLD); glutAddMenuEntry("Grafit (cyna z ołowiem)", PEWTER); glutAddMenuEntry("Srebro", SILVER); glutAddMenuEntry("Polerowane srebro", POLISHED_SILVER); glutAddMenuEntry("Szmaragd", EMERALD); glutAddMenuEntry("Jadeit", JADE); glutAddMenuEntry("Obsydian", OBSIDIAN); glutAddMenuEntry("Perła", PEARL); glutAddMenuEntry("Rubin", RUBY); glutAddMenuEntry("Turkus", TURQUOISE); glutAddMenuEntry("Czarny plastik", BLACK_PLASTIC); glutAddMenuEntry("Czarna guma", BLACK_RUBBER); // utworzenie podmenu - Wektory normalne int MenuNormals = glutCreateMenu(Menu); glutAddMenuEntry("Jeden wektor normalny na wierzchołek", NORMALS_SMOOTH); glutAddMenuEntry("Jeden wektor normalny na ścianę", NORMALS_FLAT); // utworzenie podmenu - aspekt obrazu int MenuAspect = glutCreateMenu(Menu); glutAddMenuEntry("Aspekt obrazu - cale okno", FULL_WINDOW); glutAddMenuEntry("Aspekt obrazu 1:1", ASPECT_1_1); // menu główne glutCreateMenu(Menu); glutAddSubMenu("Materiał", MenuMaterial); glutAddSubMenu("Wektory normalne", MenuNormals); glutAddMenuEntry("Swiatlo kierunkowe", SWIATLO_KIERUNKOWE); glutAddMenuEntry("Swiatlo otaczajace", SWIATLO_OTACZAJACE); glutAddMenuEntry("Reflektor", REFLEKTOR); glutAddSubMenu("Aspekt obrazu", MenuAspect); glutAddMenuEntry("Wyjscie", EXIT); // określenie przycisku myszki obsługującej menu podręczne glutAttachMenu(GLUT_RIGHT_BUTTON); // sprawdzenie i przygotowanie obsługi wybranych rozszerzeñ ExtensionSetup(); // wprowadzenie programu do obsługi pętli komunikatów glutMainLoop(); return 0; }
int main(int argc, char *argv[]) { // inicjalizacja biblioteki GLUT glutInit(&argc, argv); // inicjalizacja bufora ramki glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // rozmiary głównego okna programu glutInitWindowSize(500, 500); // utworzenie głównego okna programu glutCreateWindow("Zadanie 3"); // dołączenie funkcji generującej scenę 3D glutDisplayFunc(DisplayScene); // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna glutReshapeFunc(Reshape); // dołączenie funkcji obsługi klawiatury glutKeyboardFunc(Keyboard); // obsługa przycisków myszki glutMouseFunc(MouseButton); // obsługa ruchu kursora myszki glutMotionFunc(MouseMotion); // utworzenie podmenu - Planeta int MenuPlanet = glutCreateMenu(Menu); glutAddMenuEntry("Wenus", VENUS_TEX); glutAddMenuEntry("Ziemia", EARTH_TEX); glutAddMenuEntry("Mars", MARS_TEX); glutAddMenuEntry("Jowisz", JUPITER_TEX); // utworzenie podmenu - Filtr pomniejszający int MenuMinFilter = glutCreateMenu(Menu); glutAddMenuEntry("GL_NEAREST_MIPMAP_NEAREST", GL_NEAREST_MIPMAP_NEAREST); glutAddMenuEntry("GL_NEAREST_MIPMAP_LINEAR", GL_NEAREST_MIPMAP_LINEAR); glutAddMenuEntry("GL_LINEAR_MIPMAP_NEAREST", GL_LINEAR_MIPMAP_NEAREST); glutAddMenuEntry("GL_LINEAR_MIPMAP_LINEAR", GL_LINEAR_MIPMAP_LINEAR); // utworzenie podmenu - Aspekt obrazu int MenuAspect = glutCreateMenu(Menu); #ifdef WIN32 glutAddMenuEntry("Aspekt obrazu - całe okno", FULL_WINDOW); #else glutAddMenuEntry("Aspekt obrazu - cale okno", FULL_WINDOW); #endif glutAddMenuEntry("Aspekt obrazu 1:1", ASPECT_1_1); // menu główne glutCreateMenu(Menu); glutAddSubMenu("Planeta", MenuPlanet); #ifdef WIN32 glutAddSubMenu("Filtr pomniejszający", MenuMinFilter); glutAddSubMenu("Aspekt obrazu", MenuAspect); glutAddMenuEntry("Wyjście", EXIT); #else glutAddSubMenu("Filtr pomniejszajacy", MenuMinFilter); glutAddSubMenu("Aspekt obrazu", MenuAspect); glutAddMenuEntry("Wyjscie", EXIT); #endif // określenie przycisku myszki obsługującego menu podręczne glutAttachMenu(GLUT_RIGHT_BUTTON); // utworzenie tekstur GenerateTextures(); // sprawdzenie i przygotowanie obsługi wybranych rozszerzeñ ExtensionSetup(); // wprowadzenie programu do obsługi pętli komunikatów glutMainLoop(); return 0; }