zoukankan      html  css  js  c++  java
  • OpenGL鼠标控制绘制矩形

    #include <windows.h>    // Windows的头文件

    #include <gl\gl.h> // OpenGL32库的头文件
    #include <gl\glu.h> // GLu32库的头文件
    #include <gl\glaux.h> // GLaux库的头文件
    #include <gl\glut.h> // Glut库头文件

    #pragma comment( lib, "opengl32.lib") // OpenGL32连接库
    #pragma comment( lib, "glu32.lib") // GLu32连接库
    #pragma comment( lib, "glaux.lib") // GLaux连接库
    #pragma comment( lib, "glut.lib") // Glut链接库

    struct GLintPoint
    {
    GLint x,y;

    };

    GLintPoint corner[2];
    bool selected = false;
    int screenWidth=640;
    int screenHeight=480;

    void myDisplay()
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glColor3f(1.0f,1.0f,1.0f);
    if(selected)
    {
    glBegin(GL_QUADS);
    glVertex2i(corner[0].x,corner[0].y);
    glVertex2i(corner[0].x,corner[1].y);
    glVertex2i(corner[1].x,corner[1].y);
    glVertex2i(corner[1].x,corner[0].y);
    glEnd();
    }
    glutSwapBuffers();

    }

    void myMouse(int button,int state,int x,int y)
    {
    if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
    {
    corner[0].x=x;
    corner[0].y=screenHeight-y;
    selected=true;
    }
    glutPostRedisplay();

    }

    void myPassiveMotion(int x,int y)
    {
    corner[1].x=x;
    corner[1].y=screenHeight-y;
    glutPostRedisplay();

    }

    int main(int argc,char **argv)
    {
    glutInit(&argc,argv);
    glutInitWindowSize(screenWidth,screenHeight);
    glutInitWindowPosition(0,0);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutCreateWindow("Rubber Rect Demo");

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0,screenWidth,0,screenHeight);
    glMatrixMode(GL_MODELVIEW);
    glClearColor(0.0f,0.0f,0.0f,0.0f);
    glViewport(0,0,screenWidth,screenHeight);

    glutMouseFunc(myMouse);
    glutDisplayFunc(myDisplay);
    glutPassiveMotionFunc(myPassiveMotion);

    glutMainLoop();
    return 0;

    }
  • 相关阅读:
    C++学习笔记27,虚函数作品
    HDU
    POJ 2524 Ubiquitous Religions
    HDU-3839-Ancient Messages(DFS)
    thinkphp 删除所有缓存 Rumtime 以及 Html 静态缓存
    [AngularJS] Design Pattern: Simple Mediator
    [Javascript] Add a browser build to an npm module
    [Angular 2] ngrx/store
    [Typescript] Introduction to Generics in Typescript
    [AngularJS] angular-md-table for Angular material design
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2328794.html
Copyright © 2011-2022 走看看