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链接库

    int screenWidth=640;

    int screenHeight=480;

    void myInit()

    {

        glClearColor(1.0,1.0,1.0,0.0);            //设置背景颜色为亮白

        glColor3f(0.0f,0.0f,0.0f);                //设置绘图颜色为黑色

        glPointSize(4.0);                        //设置点的大小为4*4像素

        glMatrixMode(GL_PROJECTION);            //设置合适的矩阵

        glLoadIdentity();                       

        gluOrtho2D(0.0,screenWidth,0.0,screenHeight);

    }

    void drawDot(int x,int y)

    {

         glBegin(GL_POINTS);

            glVertex2i(x,y);                    //画一些点

        glEnd();

    }

    void myMouse(int button,int state,int x,int y)

    {

        if(state==GLUT_DOWN)

        {

            if(button==GLUT_LEFT_BUTTON)

            {

                drawDot(x,screenHeight-y);

                glFlush();

            }

            else if(button==GLUT_RIGHT_BUTTON)

            {

                glClearColor(1.0f,0.0f,0.0f,0.0f);

                glClear(GL_COLOR_BUFFER_BIT);

                glFlush();

           

            }   

       

        }

        return;

    }

    void myDisplay()

    {

        glClear(GL_COLOR_BUFFER_BIT);            //清屏

        glBegin(GL_POINTS);

            glVertex2i(100,50);                    //画一些点

            glVertex2i(100,130);

            glVertex2i(150,130);

            glVertex2i(320,240);

        glEnd();

        glFlush();                                //送所有输出到显示设备

    }

    void main(int argc, char **argv)

    {

        glutInit(&argc,argv);                        //初始化工具包   

        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//设置显示模式

        glutInitWindowSize(640,480);                //设置窗口大小

        glutInitWindowPosition(100,150);            //设置窗口在屏幕上的位置

        glutCreateWindow("my first attempt");        //打开屏幕窗口

        //注册回调函数

        glutDisplayFunc(myDisplay);

        glutMouseFunc(myMouse);

        myInit();

        glutMainLoop();                                //进入循环

    }

  • 相关阅读:
    每日一个设计模式之策略模式
    Java发送get和post请求
    sql分组取最大值
    解析xml
    jsp:include
    schema的详解2
    文法和语言
    高级语言程序简介
    Dataframe根据某一列的值获取满足条件的行的其他列的值
    Dataframe数值转为二维列表
  • 原文地址:https://www.cnblogs.com/lzhitian/p/2808420.html
Copyright © 2011-2022 走看看