결과 화면 1
결과 화면 2

마우스 콜백을 이용해 드래그를 하면 사각형을 그릴 수 있도록 구현하였다.

 

#include <GL/glut.h>

GLint TopLeftX, TopLeftY, BottomRightX, BottomRightY;

void MyDisplay() {
glViewport(0, 0, 500, 500);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f(TopLeftX/500.0, (500-TopLeftY)/500.0, 0.0);
glVertex3f(TopLeftX/500.0, (500-BottomRightY)/500.0, 0.0);
glVertex3f(BottomRightX/500.0, (500-BottomRightY)/500.0, 0.0);
glVertex3f(BottomRightX/500.0, (500-TopLeftY)/500.0, 0.0);
glEnd();
glFlush();
}

void MyMouseClick(GLint Button, GLint State, GLint X, GLint Y) {
if (Button== GLUT_LEFT_BUTTON && State == GLUT_DOWN) {
TopLeftX = X;
TopLeftY = Y;
}
}

void MyMouseMove (GLint X, GLint Y) {
BottomRightX = X;
BottomRightY = Y;
glutPostRedisplay();
}

int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
glutCreateWindow("Mouse Callback");

glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

glutDisplayFunc(MyDisplay);
//마우스 콜백 함수 등록
glutMouseFunc(MyMouseClick);
glutMotionFunc(MyMouseMove);
glutMainLoop();

return 0;
}

'OpenGL' 카테고리의 다른 글

[OpenGL] 5. 선형보간  (0) 2019.07.19
[OpenGL] 미니 프로젝트  (0) 2019.07.17
[OpenGL] 4. 메뉴 콜백  (0) 2019.07.16
[OpenGL] 3. 키보드 콜백  (0) 2019.07.10
[OpenGL] 1. 삼각형 그리기  (0) 2019.07.05

+ Recent posts