示例#1
0
文件: main.cpp 项目: c-w/ug4_Shaders
void keyboard_handler(unsigned char key, int x, int y) {
    glm::vec3 translation = glm::vec3(0, 0, 0);
    glm::vec3 rotation = glm::vec3(0, 0, 0);
    // check which translation or rotation was requested
    switch (key) {
        case 'q': translation = glm::vec3( 1, 0, 0); break;
        case 'w': translation = glm::vec3(-1, 0, 0); break;
        case 'e': translation = glm::vec3( 0, 1, 0); break;
        case 'r': translation = glm::vec3( 0,-1, 0); break;
        case 't': translation = glm::vec3( 0, 0, 1); break;
        case 'y': translation = glm::vec3( 0, 0,-1); break;
        case 'a': rotation = glm::vec3( 1, 0, 0); break;
        case 's': rotation = glm::vec3(-1, 0, 0); break;
        case 'd': rotation = glm::vec3( 0, 1, 0); break;
        case 'f': rotation = glm::vec3( 0,-1, 0); break;
        case 'g': rotation = glm::vec3( 0, 0, 1); break;
        case 'h': rotation = glm::vec3( 0, 0,-1); break;
        case ' ': viewMatrix = get_default_viewMatrix(); break;
        case  27: exit(0);
    }
    // perform the translation or rotation
    if (translation.x != 0 || translation.y != 0 || translation.z != 0) {
        viewMatrix = glm::translate(viewMatrix, translation);
    } else if (rotation.x != 0 || rotation.y != 0 || rotation.z != 0) {
        viewMatrix = glm::rotate(viewMatrix, 1.0f, rotation);
    }
    normalMatrix = get_default_normalMatrix();
    // re-draw the scene
    display_handler();
}
示例#2
0
void update_display(void) {
  void (*display_handler)(char*,char*) = state_handlers[state].display;
  char line_1[17];
  char line_2[17];
  
  clear_line(line_1);
  clear_line(line_2);
  
  if (display_handler == NULL) return;
  
  display_handler(line_1, line_2);
  display_line(LCD_LINE_1, line_1);
  display_line(LCD_LINE_2, line_2);
}