opengl可编程管线鼠标画线段

本文介绍了使用OpenGL可编程管线通过鼠标点击来绘制线段的方法。首先声明并设置MouseButtonCallback和CursorPosCallback函数,前者在鼠标按下时记录起点,后者在每一帧更新终点。当线段起点确定后,利用glfwGetCursorPos获取鼠标实时位置,经过坐标转换后,以当前鼠标位置作为终点绘制线段。绘制时需绑定VAO,并在glDrawArrays中使用GL_LINE_STRIP参数,避免使用GL_LINE以符合可编程管线的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习opengl可编程管线的基础知识的网站:learnOpengl

主要讲一下如何使用可编程管线实现鼠标交互的线段绘制。

首先声明两种回调函数以及将其设置给对应的函数:



MouseButtonCallback在鼠标按下时才会调用,CursorPosCallback则在每一帧都会附给width和height鼠标的实时坐标。

然后再看一下这两个函数的具体内容:


firstClick如果为true,代表线段的起点已经确定,再次点击会确定终点,并将firstClick设为false。

glfwGetCursorPos会将鼠标的实时位置附给两个参数tempX和tempY,该坐标为屏幕坐标,因此需要进行坐标转换,将其转换为窗口坐标。


当线段起点确定后,可以通过该函数在每一帧都以当前鼠标坐标为终点绘制出线段。

然后再看具体的绘制语句:


绑定对应的VAO,然后在glDrawArrays中选择GL_LINE_STRIP参数,注意不要使用GL_LINE,GL_LINE是用于固定管线的绘制。

#include <glad/glad.h>
#include <glfw3.h>
#include <iostream>
#include <shader_m.h>

void mouse_callback(GLFWwindow* window, double xpos, double ypos);
void scroll_cal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值