@Salabar

Freeglut, считывание с клавиатуры и мыши

Если коротко, то ни на то, ни на другое он не реагирует.
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutInitWindowSize(512, 512);
    glutInitContextVersion(4, 3);
    glutInitContextProfile(GLUT_CORE_PROFILE);
<b>    glutMouseFunc(mousemove);    
    glutKeyboardFunc(keybord);
</b>    glutIdleFunc(IdleFunc);


    glutCreateWindow(argv[0]);

    glewExperimental = GL_TRUE; 
    if (glewInit()) {
        cerr << "Unable to initialize GLEW ...exiting" << endl;
        exit(EXIT_FAILURE);
    }
    init();
    
    glutDisplayFunc(display);

    glutMainLoop();
}


void mousemove(int button, int state, int x, int y){
    printf("I'm here\n");
//И еще чуть-чуть кода, который ничего особо не делает
}


void keybord(unsigned char key,int x, int y){
    printf("Hi");
}


Ничего, как можно догадаться, не печатает. По идее, нужно просто зарегистрировать эти две функции и всё само должно заработать, но фиг. IdleFunc работает нормально. ОС - Elementary OS на базе 12 Убунту, запускаю через optirun.
  • Вопрос задан
  • 2970 просмотров
Решения вопроса 2
@Salabar Автор вопроса
И, вы не поверите, нужно было перенести блок
glutMouseFunc(mousemove);    
    glutKeyboardFunc(keybord);
    glutIdleFunc(IdleFunc);

После glutCreateWindow(argv[0]);. Это не объясняет, почему работает Idle, но да будет так. Надеюсь кому-то пригодится.
Ответ написан
Комментировать
MrGobus
@MrGobus
Иван
Сначала создать окно потом цеплять фции, иначе вы цепляете их к ничему =)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы