学习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