• 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;

    }
  • 相关阅读:
    web页面前图标
    leetcode收获
    Shell统计函数耗时(实现数字运算)
    Shell判断数值是否存在于列表
    设置Ubuntu虚拟机硬件时间与系统同步
    Python捕获键盘中断^C方法(Ctrl-C)
    Shell创建zip文件不包含完整路径方法
    jquery判断复选框checkbox是否被选中
    php Base64编码/解码
    php二维数组排序
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2328794.html
Copyright © 2020-2023  润新知