glfwMakeContextCurrent(GLFWwindow *window)
:将窗口window
设为当前上下文- OpenGL可以认为是一个巨大的状态机。所谓状态机,是一个包含了许多当前属性(背景颜色、渲染模式)的集合(状态),里面的属性值直到下次修改前都不会改变。那么当内部属性发生改变时状态也随之而变,类似编译原理里面的自动机。
- 上下文可以认为是OpenGL当前的状态,即当前执行操作的窗口,可以认为选择
window
作为当前画布。
glViewport(GLint x,GLint y,GLsizei width,GLsizei height)
:在窗口上设置绘制区域- x,y以像素为单位,指定了视口的左下角位置
- width,height 表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口
- 在默认情况下,视口被设置为占据打开窗口的整个像素矩形,视口大小与窗口大小相同
- 需要置于
glfwMakeContextCurrent(GLFWwindow *window)
函数后才会生效 - 一个程序内可以使用多次在不同区域内进行绘制
- 注册回调函数,即每次调整窗口时调用这个函数来调整视口
void framebuffer_size_callback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); } glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
OpenGL中的函数名:
glColor3f
,glVertex2f
,glVertex3d
, …- 开头gl表示OpenGL中的函数
- 数字前的单词表示该函数的作用
- 数字表示有几个参数,在
glVertex
中2表示二维坐标,3则表示三维坐标 - 数字后面的字母表示参数类型
- s:16位整型
- i:32位整型
- f:32位符点数
- d:64位符点数
3D坐标:
glVertex3f(x,y,z)
- 是二维平面的坐标, 是窗口的中心, 轴向右为正方向, 轴向上为正方向
- 为深度,可以认为是到屏幕的垂直距离
绘制代码
glBegin(TYPE); ... glEnd()
其中
TYPE
为绘图类型,常见的类型有:GL_POINTS
:离散的点(⚠️画圆点:在glBegin
前加glEnable(GL_POINT_SMOOTH);
)GL_LINES
:线GL_LINE_STRIP
:折线图(多个点的连线)GL_LINE_LOOP
:首尾相连的闭合线GL_TRIANGLES
:三角形GL_TRIANGLE_STRIP
:绘制同方向的三角形
调节粗细大小:置于
glBegin(TYPE)
前- 线的粗细:
void glLineWidth(GLfloat width)
, - 点的大小:
void glPointSize(GLfloat size)
,size
的单位是像素(默认为正方形)
- 线的粗细:
08-20
07-20
07-20
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交