【OpenGL API】 glLineWidth

OpenGL函数详解用法 OpenGL函数大全,详解作用及参数注解,结合渲染管线会更容易理解 阅读详情

[转载地址] http://blog.youkuaiyun.com/lotusone/article/details/4814018


设置线段的宽度和模式的函数分别是glLineWidth和glLineStipple,glLineWidth的原型如下

 
void glLineWidth(
  GLfloat width
);

width参数表示光栅化的线段的宽度,缺省值为1.0。glLineWidth函数指定的光栅化的线的宽度对走样线和反走样线均适用。和点的效果类似,使用启用反走样处理也影响直线的实际宽度。

 

如果线段的宽度不是1.0,则会根据使用启用了反走样处理得到不同的效果。启用线段的反走样处理必须使用glEnable(GL_LINE_SMOOTH)。

如果未启用反走样处理,实际的直线宽度是将提供的值圆整到最近的整数值,例如5.3会被圆整到5,小于1的取值均被圆整到1。如果| Δ x | ≥ | Δ y |,即直线的斜率≤1,假设直线圆整后的宽度为i,则每行填充的光栅化像素为i个;反之,则每列填充的光栅化像素为i个。

如果启用了反走样处理,直线光栅化将针对每一个像素矩形生成一个片元,这些像素矩形的宽度就是当前直线的宽度,长度等于直线的实际长度,中心在实际直线段的中心。

启用反走样时,直线的宽度也是受限制的,如同点的大小,其宽度范围也是[0.5, 10.0],最小变化步长是0.125。使用glGetFloatv(GL_LINE_WIDTH_RANGE,sizes)和

glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&step)(sizes和step的定义同上)可以获得这些约束值。

 

下面我们来看看直线的不同宽度在OpenGL中的表现。

 

void glMain()

{

    int angle;

   

    float width = 1.0f;

    float PI = 3.1415926;

 

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();   //加载单位矩阵

    glTranslatef(0.0f, 0.0f, -25.0f);

       

    //黑色直线

    glColor3f(0.0f, 0.0f, 0.0f);

 

    //禁用反走样

    glDisable(GL_BLEND);

    glDisable(GL_LINE_SMOOTH);

 

    for(angle=0; angle<180; angle+=10)

    {

        //设置直线宽度

        glLineWidth(width);

 

        //绘制直线

        glBegin(GL_LINES);

            glVertex3f(5*cos(angle*PI/180), 5*sin(angle*PI/180), 0.0);

            glVertex3f(10*cos(angle*PI/180), 10*sin(angle*PI/180), 0.0);

        glEnd();

 

        //直线宽度增加0.5

        width+=0.5;

    }

 

    //启用反走样

    glEnable(GL_BLEND);

    glEnable(GL_LINE_SMOOTH);

 

    //初始化直线宽度

    width=1.0;

 

    //绘制的直线将在下半区域

    glRotatef(180, 0.0, 0.0, 1.0);

    for(angle=0; angle<180; angle+=10)

    {

        //设置直线宽度

        glLineWidth(width);

       

        glBegin(GL_LINES);

glVertex3f(5*cos(angle*PI/180), 5*sin(angle*PI/180), 0.0);

        glVertex3f(10*cos(angle*PI/180), 10*sin(angle*PI/180), 0.0);

        glEnd();

       

        //宽度累加

        width+=1.0;

 

    }

 

    SwapBuffers(g_hDC);//交换前后缓冲区

} 

运行程序后可以看到,在上半区域,直线的未进行走样处理的,较宽的直线端点呈现出明显的斜角现象。下半区域是经反走样处理的直线,基本没有斜角现象,并且从第10条直线开始宽度就没有再增加,虽然设置的值不断增加,效果如图所示。



OpenGL(二)图形绘制之点线绘制 本次主要简单学习OpenGL中相关图形绘制的一些API。 以下程序主要是点的大小、直线线性和线宽绘制的示例。 #include #include #include #include #include //窗口的大小 GLsizei windowWidth; GLsizei windowHeight; void ReaderSc 阅读详情

相关推荐

openGL 固定函数原语组装和光栅化API

这里写目录标题glGetMultisamplefvglMinSampleShadingglPointSizeglPointParameter{if}glPointParameter{if}vglLineWidthglFrontFaceglCullFaceglPolygonModeglPolygonOffset glGetMultisamplefv glMinSampleShading glPointSize glPointParameter{if} glPointParameter{if}v glLineW

技术学习 213

openGL线型和线宽以及线的抗锯齿

openGL线型和线宽以及线抗锯齿 一、线宽 Opengl的线宽设置:glLineWidth(width); width为float类型值,在0~10.0,大于10以上按10来处理。 若开启线的反走样glEnable(GL_LINE_SMOOTH);,设置小数值才起作用,否则就四舍五入的处理整数了。 二、线型 函数为glLineStipple(fact...

weixin_30319097的博客 1444

双API渲染管线设计:Vulkan与OpenGL共存实践

图形渲染引擎中的多API支持,本质是跨图形API的状态抽象与资源协同问题。其核心原理在于统一资源句柄、对齐隐式/显式同步模型、协调生命周期管理,并在运行时实现无感切换。技术价值体现在跨平台兼容性提升、WSL2等受限环境下的GPU加速突破,以及工业级应用中对稳定性与性能的双重保障。典型应用场景包括CAD/数字孪生软件的渲染后端选型、legacy OpenGL模块与现代Vulkan管线混合集成,以及Chrome开启Vulkan后的底层渲染适配。Yutrel框架正是这一理念的工程落地范本,深度融合Vulkan和O

weixin_33806859的博客 349

OpenGL glLineWidth失效问题

OpenGL glLineWidth失效问题

dayuhaitang1的博客 1119

基于VC++与OpenGL的飞机仪表控件开发与渲染实践

在飞行模拟、工业监控和仿真训练系统中,实时仪表盘是交互界面的核心,而如何高效绘制刻度盘、指针和数字标注,是图形渲染领域常被讨论的基础问题。OpenGL作为跨平台的硬件加速图形接口,凭借其矩阵变换和几何渲染能力,已成为工业可视化中实现流畅指针旋转与表盘绘制的常用选择。本文将介绍在Windows桌面环境中,如何利用VC++与OpenGL构建可复用的飞机仪表控件,从坐标系统、表盘刻度到指针动画,系统梳理技术原理与工程实践。这种基于数据驱动的渲染机制,不仅能应用于飞行训练软件,还广泛适用于无人机地面站、航模遥控器模

weixin_34127717的博客 361

Qt OpenGL上下文配置指南:机器人仿真实时渲染基石

OpenGL上下文是图形渲染的基础概念,决定GPU能否被正确调用与加速。其核心原理涉及上下文创建、版本协商、着色器编译及渲染管线绑定,直接影响仿真系统的实时性与稳定性。在机器人仿真领域,该技术支撑IK解算可视化、传感器数据同步渲染与多关节联动等关键能力,广泛应用于URDF模型加载、ROS2轻量化迁移及教学实验平台构建。尤其当面临WSL2环境适配、Qt跨版本兼容或Linux发行版OpenGL栈碎片化等问题时,精准控制QOpenGLContext成为突破性能瓶颈的第一道门槛。本文聚焦Qt 5.15.2与Open

weixin_33910460的博客 428

GLES2.0中文API-glLineWidth

名称 glLineWidth - 指定栅格化线条的宽度 C规范 void glLineWidth(GLfloat width); 参数 width 指定栅格化线条的宽度。初始值为1。 描述 glLineWidth指定线条的栅格化宽度。 通过将提供的宽度四舍五入到最接近的整数来确定实际宽度。如果Δx&gt; =Δy,则在每个光栅化的列中填充i个像素,其中i是宽度的舍入值。否则,在光...

flycatdeng的专栏 2626

OpenGL与GDI混合编程:Visual C++图形绘制实战解析

在Windows图形编程中,GDI与OpenGL分别代表了CPU软绘制与GPU硬件加速两条技术路径。GDI擅长线条、文字等基础2D绘制,而OpenGL通过渲染管线和着色器实现复杂3D场景与高效图形输出。理解二者在像素格式、渲染上下文、双缓冲交换等底层机制上的差异,是构建混合渲染架构的关键。实际桌面应用中,常以GDI实现HUD、坐标轴等覆盖层,用OpenGL承载主场景渲染,兼顾开发效率与性能表现。本文以“OpenGL-Drawing.rar”示例工程为切入点,从工程配置、固定管线代码拆解到glUniformM

weixin_34356555的博客 303

计算机图形学(三)_图元的属性_7_ 线属性函数

对于一条折线来说,指定的线型模式并非在每一线段的始端重新开始。它从折线的第一个端点开始,到最后一条线段的最终一个端点结束,连续地应用于折线中的所有线段。 作为指定一个线型的例子,假定参数pattern赋予了十六进制数0x00FF而重复因子为1。这将显示一条由8像素短划和8像素短划间隔的划线。同样,由于先应用低位值,线段从始端开始显示一个8像素短划,接着是一个8像素间隔,然后再显示一个8像素短划,如此知道第二个端点。在使用当前线型显示线段之前,必须先激活OpenGL的线型特性。下面的函数可实现

heyuchang666的专栏 1778

【电子电力】IEEE33节点系统参数及拓扑图visio

IEEE33节点系统是一种广泛用于电力系统分析和研究的标准配电网络。该系统具有典型的辐射结构,适用于负载流分析、分布式发电优化及电力系统的可靠性评估。本报告主要基于IEEE33节点系统的拓扑图,讨论其在电子电力系统中的应用。通过MATLAB仿真分析了节点的电压分布、功率损耗等关键参数,并验证了系统的稳定性和有效性。

2401_84610415的博客 1万+

2022年TI杯模拟电⼦系统设计专题邀请赛——李萨如图形演示装置

本次装置主要是对输入的正弦信号进行频率变换,并将原输入正弦信号作为 X 轴信号、变换后的正弦信号作为 Y 轴信号,绘制李萨如图形。采用 EK-TM4C123GXL 板卡作为主控;频率变换采用“锁向环+计数器”实现 1-5 倍频的频率变换控制;李萨如图形采用两个 AD通道采集原输入的正弦信号作为 X 轴信号和频率变换后的正弦信号作为 Y 轴信号,绘制李萨如图形。

qq_45890466的博客 7769

每天一个OpenGL程序 第三篇 线的绘制

#include #include #include #include /*  *  练习3.1  *  绘制线的学习,圆盘射线  */ //定义常量PI #define GH_PI 3.1415926f //声明一个渲染函数 void ghRender(void); //声明初始化gl操作 void initGL(); void main() {  /

hahahakonghee的专栏 1013

Innovus实战:5分钟搞定postRoute阶段冗余hold buffer的自动清理(附PHC识别技巧)

本文分享了在数字IC后端设计中使用Innovus工具,于postRoute阶段自动清理冗余hold buffer的实战技巧。通过配置时序感知的面积回收模式,可在5分钟内安全移除非关键路径上的PHC缓冲器,有效优化芯片面积与功耗,并附有PHC识别与验证方法。

moon9的博客 400

Hazel游戏引擎(110)渲染Line和Rect

此节目的要给当前引擎添加能渲染线条方框功能。渲染方框是在渲染线条的基础上实现的为什么当前的物体包围盒需用线条、方框显示,提供友好的视觉功能以后使用引擎的人员可能会需要射线检测,在编辑场景时就要看到射线的效果,相当于gizmos。线条、Rect如何画先说quad怎么画OpenGL的API画Quad需要提供索引缓冲区,会有重复的索引被使用线条使用OpenGL的API画不需要提供索引缓冲区,只需要提供顶点数组就行。同quad一样,顶点位置可以重复利用,两个顶点位置确定一条线Rect是用。

qq_34060370的博客 411

电脑蓝牙与ESP32蓝牙连接,让电脑发现ESP32

让PC发现ESP32蓝牙

injre! injre~ 5446

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

weixin_59961223的博客 9451

OpenGL如何画虚线

glLineWidth (1.0); glLineStipple (1, 0x0F0F); glBegin(GL_LINES); glVertex2f (0.0,0.0); glVertex2f (100.0,100.0); glEnd(); 转自:http://www.cnblogs.com/eyye/archive/2007/06/10/778098.html

一千万 5951

SAP FICO实操:如何修改已发生业务数据的成本中心公司代码(附RKACOR06程序运行指南)

本文详细解析了SAP FICO系统中使用RKACOR06程序修改已发生业务数据的成本中心和公司代码的实操方法。通过实战案例分享,提供从前期准备到后期验证的全流程指南,帮助企业应对组织架构重组或财务核算体系调整时的数据迁移挑战,特别适用于跨公司代码的成本中心划转场景。

weixin_27303545的博客 190

2.1 点、直线、多边形

OpenGL中的点将被画成单个的像素。同一像素上,OpenGL可以绘制许多坐标只有稍微不同的点,但该像素的具体颜色将取决于OpenGL的实现。OpenGL的直线必须是有限长度,它可以由两个端点来确定。(可以理解为数学中的线段)多边形是由多条线段首尾相连而形成的闭合区域。OpenGL规定,一个多边形必须是一个“凸多边形”(其定义为:多边形内任意两点所确定的线段都在多边形内,由此也可以推导出,凸多边形不

夏木的博客 653

高熵合金AlCoCrFeNi/金刚石摩擦案例代码

本文介绍金刚石与高熵合金AlCoCrFeNi摩擦的案例。 在之前的文章中,介绍过使用fix indent命令实现虚拟球的摩擦,本文介绍使用金刚石实体球实现高熵合金摩擦的方法。 主要的模拟过程如下: (1)基体建模 建使用原子替换法获得高熵合金初始模型,升温到3000K驰豫后,冷却至300K,获得平衡组织。 (2)摩擦球建模 在高熵合金平衡组织的模型中添加金刚石摩擦球,使用change_box命令扩大box尺寸,添加金刚石摩擦球,并设置混合力场。 (3)摩擦过程 摩擦球下压一定深度后,沿y方向进行摩擦,摩擦

lammps_jiayou的博客 2900

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win32 opengl画线

#include "stdafx.h" #include "Win32Project1.h" #include "glut.h" #define MAX_LOADSTRING 100 // 全局变量: HINSTANCE hInst; // 当前实例 HWND hWnd; TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szW

sz76211822的专栏 610

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WIN32 opengl缩放、旋转、移动图形

#include "stdafx.h" #include "Win32Project1.h" #include "glut.h" #define MAX_LOADSTRING 100 // 全局变量: HINSTANCE hInst; // 当前实例 HWND hWnd; TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szW

sz76211822的专栏 1077

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

GLES3.0中文API-glLineWidth

名称 glLineWidth - 指定栅格化线条的宽度 C规范 void glLineWidth(GLfloat width); 参数 width 指定栅格化线条的宽度。初始值为1。 描述 glLineWidth指定线条的栅格化宽度。 通过将提供的宽度四舍五入到最接近的整数来确定实际宽度。如果Δx> =Δy,则在每个光栅化的列中填充i个像素,其中i是宽度的舍入值。否则,在光栅化的每一行中填充...

MSK1111的博客 878

openGL

说起编程作图,大概还有很多人想起TC的#include 吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。 本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。 OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。 1、与C语言紧密结合。 OpenGL命令最初就

zhuyanling0106的专栏 1506

OpenGL绘制几何物体(特性)

几何物体可以用点来描述,我们可以通过OpenGL的api来了解一下 几何图形类型 其中以glBegin开始,glEnd结束 下图是采用不同类型的图形效果 为了熟悉上诉图形,下面来对每种图形进行测试 建立基础坐标系 在画图之前,首先要先建立坐标系,将以左下角为(0,0)点,如下图 窗体的大小则作为修剪的范围 void resha

爱拼才会赢 2143
上一篇: [OpenGL ES 1.0 API] glVertexPointer
下一篇: C++中explicit关键字的作用
mnorst
博客等级 码龄16年 38粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值