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;

    }
  • 相关阅读:
    (一)3、安装jexus
    走向全栈之坑—开始实践
    java Collection.stream操作
    redis常用命令练习
    Spring4
    java数据提交时问题
    常见协议默认端口
    重写equals方法
    redis
    xml
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2328794.html
Copyright © 2011-2022 走看看