游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9651|回复: 1

一个OpenGL的新手,今天编了一个用鼠标画矩形的例子,发

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-5-24 17:02:00 | 显示全部楼层 |阅读模式
我是一个OpenGL的新手,今天编了一个用鼠标画矩形的例子,但是发现画出来的矩形却不会主动显示出来,需要我把显示窗口最小化再还原以后才能显示,不知是什么问题?下面是我的源码,请大牛们帮帮忙。。。

#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>

GLfloat x1,y1,x2,y2;
float ww,hh;

int num = 0;//记录已点击鼠标左键次数
GLfloat loc[2][2] = {0};//坐标记录数组


//显示回调函数
void myDisplay(void)
{
        glClear(GL_COLOR_BUFFER_BIT);
       
        for(int i=0; i<=num; i+=2)
        {
                glColor3f(0.0,1.0,1.0);
                glBegin(GL_POLYGON);
                        glVertex2f(loc[0], loc[1]);
                        glVertex2f(loc[0], loc[i+1][1]);
                        glVertex2f(loc[i+1][0], loc[i+1][1]);
                        glVertex2f(loc[i+1][0], loc[1]);
                glEnd();
                glutSwapBuffers();
        }
}


//鼠标响应回调函数
void myMouse(int button, int state, int x, int y)
{

        //记录鼠标左键当前坐标
        if(state == GLUT_DOWN && button == GLUT_LEFT_BUTTON)
        {
                loc[num][0] = x;
                loc[num][1] = hh - y;
                num++;
        }

}

//初始化函数
void init(void)
{
        glClearColor(1.0, 1.0, 1.0, 0.0);
        glColor3f(0.0,0.0,0.0);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(-1,1,-1,1);
}


//窗口重构函数
void myReshape(int w, int h)
{
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0.0,(GLfloat)w,0.0,(GLfloat)h);
        glMatrixMode(GL_MODELVIEW);
        glViewport(0,0,w,h);

        ww = w;
        hh = h;
}


int main(int argc, char* argv[])
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(200,200);
        glutInitWindowPosition(500,500);

        glutCreateWindow("Mouse");
        init();
       
        glutMouseFunc(myMouse);
        glutReshapeFunc(myReshape);
        glutDisplayFunc(myDisplay);


        glutMainLoop();
}

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2012-5-29 09:22:00 | 显示全部楼层

Re:一个OpenGL的新手,今天编了一个用鼠标画矩形的例子,

Repaint()
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-28 06:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表