在OpenGL中,使用鼠标绘制可以通过以下步骤实现:
以下是一个简单的示例代码:
#include <GL/glut.h>
// 记录鼠标点击的位置
int x1 = 0, y1 = 0;
int x2 = 0, y2 = 0;
// 鼠标点击事件处理器
void mouse(int button, int state, int x, int y) {
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
x1 = x;
y1 = y;
}
}
// 鼠标移动事件处理器
void motion(int x, int y) {
x2 = x;
y2 = y;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
glVertex2i(x1, y1);
glVertex2i(x2, y2);
glEnd();
glFlush();
}
// 初始化OpenGL窗口和鼠标事件处理器
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL绘图");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0, 800, 0, 600);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
return 0;
}
这个示例代码中,我们使用了GLUT库来创建OpenGL窗口和处理鼠标事件。在鼠标点击事件处理器中,我们记录了鼠标点击的位置。在鼠标移动事件处理器中,我们根据鼠标当前位置和上一个点击位置,计算出绘制的线段,并使用GL_LINE_STRIP模式将其绘制出来。
领取专属 10元无门槛券
手把手带您无忧上云