Delphi下OpenGL2d绘图之画点的方法
在Delphi的OpenGL2D绘图中,画点需先调用glPointSize设置点直径,然后通过glBegin(GL_POINTS)和glEnd()之间使用glColor3f指定颜色、glVertex2f指定坐标,最后调用SwapBuffers显示结果。
在Delphi环境下进行OpenGL 2D绘图,有一个非常基础但又绕不开的操作——画点。别看它简单,却是理解OpenGL图元绘制流程的起点。图形绘制的核心逻辑其实就藏在glBegin()与glEnd()这一对函数之间,而整个绘图框架的初始化工作可以复用标准的OpenGL 2D初始化代码。这里我们重点关注的是Draw函数部分,把画点这件事彻底讲透。
一、前言

画点之前,先弄明白两个关键函数:glPointSize用来指定栅格化点的直径,默认值是1.0。这个设置只在GL_POINTS模式下起作用,至于抗锯齿之类的高级特性,可以后续再研究。而glBegin(GL_POINTS)则是告诉OpenGL:“接下来我要画点了。”参数GL_POINTS只是其中一种,其他如画线用GL_LINES等等,都可以在OpenGL单元的源码里查到。
这两个函数的原型非常简洁:
void glBegin(GLenum mode)
void glEnd(void)
参数mode决定了你要绘制哪种图元。下面列出所有可用的模式值,每个都有明确的行为:
- GL_POINTS:每个顶点作为一个独立的点,顶点n即定义了点n,共绘制N个点。
- GL_LINES:每两个顶点构成一条独立线段,顶点2n-1和2n之间定义第n条线段,共绘制N/2条。
- GL_LINE_STRIP:从第一个顶点到最后一个顶点依次相连,顶点n和n+1定义线段n,共绘制n-1条。
- GL_LINE_LOOP:与
GL_LINE_STRIP类似,但最后还会把最后一个顶点和第一个顶点连起来,形成闭合环,共绘制n条。 - GL_TRIANGLES:每三个顶点构成一个独立三角形,顶点3n-2、3n-1、3n定义第n个三角形,共绘制N/3个。
- GL_TRIANGLE_STRIP:一组相连的三角形。对于奇数n,顶点n、n+1、n+2定义第n个三角形;对于偶数n,顶点n+1、n、n+2定义第n个三角形。共绘制N-2个。
- GL_TRIANGLE_FAN:一组以第一个顶点为中心的扇形三角形。顶点1、n+1、n+2定义第n个三角形,共绘制N-2个。
- GL_QUADS:每四个顶点构成一个独立四边形。顶点4n-3、4n-2、4n-1、4n定义第n个四边形,共绘制N/4个。
- GL_QUAD_STRIP:一组相连的四边形,每对顶点和后一对顶点共同确定一个四边形。顶点2n-1、2n、2n+2、2n+1定义第n个四边形,共绘制N/2-1个。
- GL_POLYGON:绘制一个凸多边形,顶点1到n定义了这个多边形。
需要特别注意的是,glBegin和glEnd之间只能放置顶点定义以及相关的属性设置(如颜色),不能在里面调用glPointSize这类状态设置函数。
二、画点
画点的实现代码非常直观。下面是一个完整的Draw过程示例:
procedure TForm1.Draw; begin // 清空缓冲区 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // 设置点大小,不能在glBegin和glEnd之间 glPointSize(10); glBegin(GL_POINTS); // 画点 // 设置点的颜色 glColor3f(1, 0, 0); // 绘制点 glVertex2f(50, 50); glColor3f(0, 1, 0); glVertex2f(100, 50); glColor3f(0, 0, 1); glVertex2f(150, 50); glEnd; SwapBuffers(FDC); // 交换双缓冲区内容,将刚绘制的图形翻印到屏幕上 end;
这段代码做了三件事:首先清空颜色和深度缓冲区,接着设置点的直径为10像素(注意,这一步必须在glBegin之前完成),然后用glBegin(GL_POINTS)开启点绘制模式,依次设置颜色并指定顶点位置。可以看到,每个顶点用glColor3f指定颜色,再用glVertex2f指定坐标——第一个点红色位于(50,50),第二个点绿色位于(100,50),第三个点蓝色位于(150,50)。最后调用SwapBuffers将绘制结果呈现到屏幕上。
从这段代码可以清楚地看到,glColor3f控制颜色,glVertex2f控制位置,两者配合就能在指定位置画出指定颜色的点。理解了这个基础,后续更复杂的图元绘制(线段、三角形、多边形)就只是换一个glBegin的参数而已。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















