2016-09-17 3 views
-1
#include <iostream> 
#include <GLUT/GLUT.h> 
#include <OpenGL/OpenGL.h> 

void GraphiqueAffichage() { 
    glClearColor(1.0, 1.0, 0.5, 0.5); 
    glClear(GL_COLOR_BUFFER_BIT); 
    glMatrixMode(GL_MODELVIEW); 
    glFlush(); 
} 

int main(int argc, const char * argv[]) { 
    // insert code here... 
    glutInitWindowPosition(10, 10); 
    glutInitWindowSize(480, 272); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); 
    glutCreateWindow("Bonjour"); 
    glutDisplayFunc(GraphiqueAffichage); 
    glutMainLoop(); 
    return 0; 
} 

Здравствуйте Я на Mac OS X с использованием 10.12, анс с этим кодом, не отображается окно, это нормально? Зачем ? Пожалуйста, помогите мне. Компиляция правильная, без ошибок, сборка выполнена успешно, но не создается окно! Я пробовал этот код, который работает с окнами, но у меня есть Mac, и он не работает, как заставить его работать?Mac OS X отказывается создавать мой OpenGL окна

ответ

2

Компиляция правильно, нет ошибки, построить успешный ...

но вы получите список ошибок, когда вы запустить программа, не так ли? «Успешно компилировать» не означает (увы), то ваш код верен.

Глядя на самое первое сообщение об ошибке, кажется, вы забыли назвать glutInit первым:

int main(int argc, char * argv[]) { 
    glutInit(&argc, argv); 
    glutInitWindowPosition(10, 10); 
    ... 

(там, где ваш код говорит, «вставить код здесь» ...)

man glutInit говорит вы, почему это так же не удалось:

glutInit будет инициализировать библиотеку GLUT и согласовать сеанс с системой окон.

где "оконная система" является Mac OS X.

Кроме того, ваш main неправильно. argv не является const char * - с этим спецификатором const, ваш компилятор будет кричать на вас.

С этими изменениями я получаю красивое желтое окно - ваше glClearColor - и с пользовательским названием «Bonjour».

+0

Да, но это не было написано в книге, которую я купил, это нормально? –

+0

В примечании к http://linux.die.net/man/3/glutinit сказано следующее: «Вы действительно должны всегда называть это, даже если вы пользователь WIN32». Возможно, автор вашей книги не знал об этом. Некоторые инструментальные средства могут жаловаться ['glutInit' устарел] (http://stackoverflow.com/q/24095931/2564301); Я предполагаю, что в основном зависит от того, какую версию вы используете. FWIW: ваш код с изменениями не выдает этого конкретного предупреждения в моей системе - Mac OS X 10.7.5, используя 'clang'. – usr2564301

+0

@johnathanMhehdi: Я думаю, вопрос в том, работает ли ваша программа с этим? Если нет, мне придется посмотреть дальше. Возможно, вам придется добавить, из какой книги пришел ваш код. – usr2564301

0

Вам нужно инициализатор GLUT

glutInit (& ARGC, ARGV);

в вашем основном.

//#include <iostream> 
#include <GLUT/GLUT.h> 
#include <OpenGL/OpenGL.h> 

void GraphiqueAffichage() { 
    glClearColor(1.0, 1.0, 0.5, 0.5); 
    glClear(GL_COLOR_BUFFER_BIT); 
    glMatrixMode(GL_MODELVIEW); 
    glFlush(); 
} 

int main(int argc, const char * argv[]) { 
    // insert code here... 
    glutInit(&argc, argv); 
    glutInitWindowPosition(10, 10); 
    glutInitWindowSize(480, 272); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); 
    glutCreateWindow("Bonjour"); 
    glutDisplayFunc(GraphiqueAffichage); 
    glutMainLoop(); 
    return 0; 
} 
Смежные вопросы