- 博客(579)
- 收藏
- 关注
原创 【Swift】 UIKit:UIGestureRecognizer和UIView Animation
摘要: UIGestureRecognizer是iOS中处理触摸手势的基类,提供多种手势类型(点击、长按、滑动、拖曳、缩放、旋转),通过target-action或代理实现交互。核心手势包括: 点击/长按:支持单/多指、单/多次触发,可解决手势冲突(如require(toFail:))。 滑动/拖曳:滑动需单独设置方向(上下左右),拖曳实时跟踪位置,适用于视图移动。 缩放/旋转:通过scale和rotation属性调整视图大小与角度。 关键代码逻辑: 点击与长按:配置手指数量、点击次数及长按时间,通过sta
2025-11-23 23:04:43
961
原创 【Swift】UIKit:UIScrollView、MutiPage、UINavigationController和UITabBarController
UIScrollView是iOS中实现视图滚动与缩放的基础组件,支持水平和垂直滚动(当内容尺寸contentSize超过视图范围frame时)。主要功能包括:基础滚动与缩放(需设置缩放比例和代理方法)、分页滚动(配合UIPageControl实现分页引导页或图片轮播)。关键属性包括contentSize(内容尺寸)、isPagingEnabled(分页开关)、zoomScale(缩放比例)等。代码示例展示了如何创建滚动视图、配置缩放参数、添加分页指示器,并通过代理方法实现缩放和分页控制。适用于长文本浏览、图
2025-11-23 23:01:16
648
原创 【Swift】UIKit:UISegmentedControl、UISlider、UIStepper、UITableView和UICollectionView
摘要:本文介绍了iOS开发中两个常用UI组件:UISegmentedControl分段选择器和UISlider滑块组件。UISegmentedControl用于单选项分段选择,支持文字/图片选项、自定义颜色和默认选中项,通过valueChanged事件响应选择变化。UISlider用于连续数值调节,可设置数值范围、步长和外观样式,支持实时或滑动结束回调。文章详细说明了两个组件的核心功能、关键属性方法,并提供了Swift代码示例,分别演示了分段选择器的创建使用和滑块控制图片透明度的实现。
2025-11-23 22:50:46
1066
原创 【Swift】UIKit:UIAlertController、UIImageView、UIDatePicker、UIPickerView和UISwitch
UIAlertController 是 iOS 8+ 推出的弹窗组件,用于替代旧版 UIAlertView 和 UIActionSheet。它支持两种样式:居中弹窗(alert)和底部弹出框(actionSheet),可添加按钮、输入框,实现提示、确认、输入等功能。关键方法包括创建弹窗、添加按钮/输入框、显示弹窗等。需要注意 iPad 适配、输入框安全获取、闭包循环引用等问题。UIImageView 是图片展示组件,支持静态图片显示和动态轮播,可配置内容模式、轮播参数等。两者都是 iOS 开发中常用的 UI
2025-11-23 22:41:47
1119
原创 【SWift】UIKit:UIView、UILabel、UITextField、UITextView和UIButton
UIView是UIKit中所有可视化组件的基类,主要作为容器管理子视图或展示视觉元素。其核心功能包括布局管理(frame/center)、视觉属性设置(backgroundColor)和触摸事件处理。UILabel是专门展示静态文本的组件,支持多行显示、文本样式定制和阴影效果。UITextField用于单行文本输入,提供占位提示、键盘样式自定义和清除按钮等功能。开发时需注意:frame布局在屏幕旋转时可能错乱,建议使用AutoLayout;UILabel字体修改需重新赋值;UITextField需通过代理处
2025-11-23 22:32:18
1017
原创 【Swift】UIKit:认识UIKit
UIKit是Apple官方推出的iOS/iPadOS原生界面开发框架,用于构建可视化界面和处理用户交互。其核心价值在于原生性、功能性、兼容性和扩展性,提供从基础控件到复杂交互的全场景支持。UIKit基于视图(UIView)、视图控制器(UIViewController)、视图层级和代理模式等核心概念构建,包含丰富的预制组件分类。其运行机制依赖事件响应链、AutoLayout自动布局和视图生命周期管理。UIKit适用于需要系统深度集成、复杂交互或跨版本兼容的原生App开发,相比SwiftUI具有更广泛的兼容性
2025-11-23 22:24:28
751
原创 【Swift】Swift基础语法:面向对象、扩展、协议与泛型
Swift中的继承与多态支持单继承,子类通过override关键字重写父类方法和计算属性。构造器分为默认、逐一、指定、便利和必要五种类型,其中指定构造器需初始化所有属性并调用父类构造器,便利构造器则调用同类指定构造器。析构器用于资源释放,仅类支持。多态通过父类指针指向子类实例实现,final关键字可防止继承或重写。结构体自动生成默认和逐一构造器,类的构造器代理机制确保初始化顺序正确。
2025-11-22 23:59:12
1072
1
原创 【Swift】Swift基础语法:函数、闭包、枚举、结构体、类与属性
本文介绍了Swift语言中的函数和闭包基础语法。函数部分包括基本定义、参数特性(外部参数名、可变参数、输入输出参数)以及函数类型与高阶函数用法。闭包部分涵盖基本定义、语法简化规则(类型推断、参数缩写、尾随闭包、运算符函数)以及闭包捕获值机制。这些特性构成了Swift函数式编程的核心基础,支持代码复用和灵活调用。通过示例代码展示了如何定义和使用函数与闭包,包括多返回值、参数传递、高阶函数应用以及闭包简化写法等实用技巧。
2025-11-22 23:47:35
1002
原创 【Swift】 Swift 基础语法:变量、类型、分支与循环
本文介绍了Swift语言的基础语法,主要包括变量与常量的声明、数据类型、可选类型和控制流结构。Swift使用let声明常量,var声明变量,支持类型推断;提供整数、浮点数、布尔、字符和字符串等基本数据类型,均为值类型。可选类型(Optional)是Swift特有的安全机制,可通过强制解析、可选绑定等方式处理可能为nil的值。控制流包括if-else条件判断和switch语句(支持多种匹配模式),以及for-in循环用于遍历区间和集合。这些基础语法体现了Swift的安全性、简洁性和强大的类型系统。
2025-11-22 23:41:49
938
原创 【Swift】Swift 的发展与学习规划
Swift是由苹果工程师Chris Lattner于2010年开始研发,2014年正式发布的新编程语言,旨在替代Objective-C。经过多年发展,Swift经历了多个重要版本迭代:2015年开源并支持Linux,2019年实现ABI稳定,2021年引入async/await异步编程模型。目前Swift已成为苹果生态全平台开发的核心语言,支持跨平台开发并持续优化性能。学习路线建议先掌握基础语法,熟悉Xcode开发环境,再深入UIKit框架开发。Swift凭借现代语法、类型安全和内存管理等特性,已成为iOS
2025-11-22 23:23:16
911
原创 【图像处理】图像的基础几何变换
图像几何变换是改变像素空间位置的映射过程,主要分为向前映射和向后映射两种方式。向前映射存在映射不完全和重叠的问题,而向后映射能确保输出图像每个像素都能找到对应的原图像坐标。文章重点介绍了图像平移变换,通过平移矩阵实现坐标偏移,并提供了OpenCV实现代码示例,包括保持大小不变和改变大小的两种平移方式。此外还简要提及了镜像变换(水平/垂直翻转),展示了不同几何变换的实现原理及效果对比。
2025-11-07 21:30:34
708
原创 【图像处理】libtiff 的介绍与使用
libtiff是一个功能强大的开源TIFF图像处理库,支持图像读写、元数据管理、格式转换等多种操作。核心特性包括多种压缩方式、跨平台兼容性以及完整的TIFF处理流程。适用于医疗成像、出版印刷等专业场景。库文件采用动态链接方式,可通过环境变量或编译选项指定路径。TIFF格式支持无损压缩、多页存储和丰富元数据,在处理高画质图像方面具有优势。libtiff提供C/C++ API支持图像处理全流程操作,包括读取、编辑、压缩等,并支持内存映射等性能优化技术。通过合理配置安装路径和环境变量,可确保库文件正常加载使用。
2025-11-07 01:01:09
2039
原创 【图像处理】tiff格式缘何始终屹立不倒?
TIFF格式作为一种历史悠久的图像格式,在印刷、扫描、存档等领域仍具有不可替代性。该文章详细介绍了TIFF的起源、标准规范,并对比分析了GIF、BMP、PNG、JPG等常见图像格式的优缺点。TIFF凭借支持CMYK色彩模式、EXIF元数据和多页存储等优势,成为专业摄影、高分辨率扫描的首选格式。文中还解析了TIFF的文件结构,包括图像文件头、目录和数据部分。最后指出在实际应用中,TIFF、PNG和JPG常根据用途互补使用:TIFF用于高质量存储,PNG用于无损备份,JPG便于网络传播。
2025-11-07 00:33:19
1465
原创 【图像处理】tiff格式介绍
摘要:TIFF(标记图像文件格式)是一种灵活的图像存储格式,支持多种设备和应用场景。其文件结构分为三部分:文件头(8字节,标识存储方式和IFD位置)、文件目录(IFD,通过字段描述图像属性)和图像数据(位置灵活,可压缩)。TIFF格式支持大/小端存储、自定义字段和多种压缩方式,具有高度扩展性,广泛适用于扫描、打印和图像编辑等领域。核心优势在于灵活适配不同复杂度图像需求,成为跨平台图像交换的经典格式。
2025-11-06 01:32:45
1421
原创 【图像处理】png 格式详解
PNG(Portable Network Graphics)是一种无损压缩图像格式,具有透明通道和多色深支持特性。其文件结构由固定文件标志和模块化数据块组成,包含关键数据块(如IHDR、IDAT、IEND)和可选辅助数据块(如tRNS、tEXt)。PNG的无损压缩、透明支持及开源特性使其在网页设计、图标制作等领域广泛应用,相比JPG和BMP格式更适合需要保留图像细节的场景。
2025-11-06 00:55:21
1763
原创 【图像处理】libpng的介绍与使用
本文介绍了PNG文件格式及libpng库的使用方法。PNG文件采用chunk结构组织数据,核心chunk包括IHDR(元数据)、PLTE(调色板)、IDAT(像素数据)等。libpng通过两个核心结构体(png_structp和png_infop)管理图像信息与处理状态,工作流程包括初始化、I/O设置、元数据处理和图像数据读写等步骤。文中还提供了使用libpng读取PNG图像的完整代码示例,详细展示了如何将不同格式的PNG图像统一转换为RGBA格式,并处理各种错误情况。该实现涵盖了签名验证、格式转换、内存分
2025-11-05 01:56:21
693
原创 【图像处理】jpeg 格式详解
JPEG(联合图像专家小组)是一种广泛使用的图像压缩标准,支持24位真彩色和有损压缩,压缩比可达10:1~40:1。JPEG文件通过颜色转换、DCT变换、量化和编码四步骤实现高效存储,其中量化是主要失真来源。JPEG格式分为标准、渐进式和JPEG2000三种类型,扩展名主要为.jpg或.jpeg。文件结构以"段"为单元,包含SOI、APP0、SOF0等必须段,通过头部固定字节0xFFD8FF识别。JPEG适合网络传输和数字摄影,但不适用于高精度印刷。
2025-11-05 01:36:47
2376
原创 【图像处理】 libjpeg介绍与使用
JPEG是一种有损压缩图像格式,通过颜色空间转换、降采样、DCT变换、量化和熵编码实现高效压缩。libjpeg是开源的JPEG编解码库,支持压缩质量调整和多格式兼容。本文详细介绍了libjpeg的功能架构,提供了Linux下的编译方法,并给出了编码和解码的示例代码。编码部分将RGB数据压缩为JPEG文件,可自定义质量参数;解码部分读取JPEG文件并还原为RGB像素数据,同时获取图像宽高信息。
2025-11-05 00:50:50
1227
原创 【图像处理】图像错切变换
本文介绍了图像错切变换的原理及OpenCV实现方法。图像错切分为X方向(水平)和Y方向(垂直)变换,通过特定矩阵实现坐标映射。实现步骤包括:1)计算变换后图像尺寸;2)反向映射像素坐标;3)线性插值处理;4)背景填充。OpenCV实现中,通过角度计算新宽高,采用反向映射避免空洞,并使用线性插值处理小数坐标。完整代码提供了错切变换类,支持角度、背景色和方向设置,适用于BGR格式图像处理。该方法可有效实现图像几何形变,适用于计算机视觉和图像处理应用。
2025-10-26 21:03:10
832
1
原创 【图像处理】图像形态学操作
本文介绍了图像处理中的基本形态学操作,包括腐蚀、膨胀、开运算、闭运算、梯度运算和礼帽操作。腐蚀操作通过卷积核处理二值图像,缩小高亮区域;膨胀则是其逆操作,扩大高亮区域。开运算(先腐蚀后膨胀)可去除噪声,闭运算(先膨胀后腐蚀)能填补空洞。梯度运算通过膨胀与腐蚀结果的差值提取边缘,礼帽操作则通过原始图像与开运算结果的差值突出细节。文中提供了Python代码示例和效果对比图,展示了各类操作的实际应用效果。这些形态学操作在图像预处理、特征提取等领域具有重要作用。
2025-10-23 22:27:49
1047
1
原创 【图像处理】图像直方图
本文介绍了图像直方图的基本概念及其在OpenCV中的应用。直方图通过统计像素亮度分布,反映图像对比度特征。文章详细讲解了OpenCV的calcHist()函数参数及使用方法,包括单通道和彩色图像的直方图统计。同时展示了如何利用Matplotlib绘制直方图,并演示了使用掩膜提取特定区域直方图的技术。最后重点阐述了直方图均衡化的原理和实现方法,该方法通过重新分布像素强度来增强图像对比度,特别适用于低对比度图像的改善。文中配有丰富的示意图和代码示例,帮助读者理解直方图分析和处理技术。
2025-10-23 22:02:43
1268
原创 【图像处理】图像卷积
卷积是深度学习中提取局部特征的核心操作。其核心组件包括滤波器(提取特征)、步长(控制滑动间隔)、填充(保持尺寸)和通道处理(单/多输入输出)。多通道卷积通过多个滤波器生成多通道特征图,参数数量由滤波器尺寸、通道数和滤波器个数决定。卷积层具有局部感知、参数共享和平移不变性等优势,并衍生出1×1卷积、空洞卷积等变体。实际应用中需合理设置滤波器尺寸(常用3×3)、数量(逐层增加)和步长/填充(通常1/1)。代码实现可通过PyTorch等框架简洁完成。
2025-10-23 00:16:58
1165
原创 【图像处理】图像梯度算子
本文介绍了图像梯度及其常用算子,重点讲解了Sobel算子的原理与应用。Sobel算子通过3x3核分别计算图像水平和垂直方向的梯度,能够有效检测边缘。文章详细说明了OpenCV中的Sobel函数参数,并通过实例展示了x、y方向梯度的计算与组合方法。对比实验表明,分别计算x、y方向梯度再进行加权融合的效果优于直接计算。此外,文章还介绍了cv2.convertScaleAbs函数用于处理负梯度值的问题。这些方法为图像边缘检测提供了实用工具。
2025-10-22 23:16:57
974
原创 【图像处理】图像滤波
图像滤波摘要 图像滤波是图像预处理中抑制噪声、保留特征的关键操作,分为时域和频域处理。OpenCV实现了三种常用滤波方法: 均值滤波:用邻域像素平均值替代中心像素,通过blur()函数实现,核越大图像越模糊,但会损失细节。 中值滤波:取邻域像素中值,medianBlur()函数实现,对脉冲噪声效果显著,能保留边缘信息。 高斯滤波:GaussianBlur()函数实现,采用加权均值(权重随距离递减),比均值滤波模糊程度更小,通过σ参数控制平滑程度。 三种滤波各有特点:均值滤波简单但模糊明显,中值滤波适合椒盐噪
2025-10-22 22:35:03
743
原创 【图像处理】灰度图像与二值化
本文介绍了灰度图和图像二值化的基本概念及处理方法。灰度图是单通道图像,像素值范围为0-255,比彩色图更简单。文章详细讲解了三种灰度化方法:最大值法、平均值法和加权平均值法。图像二值化则将灰度图转换为黑白二值图像,介绍了全局阈值法的三种类型:阈值法、反阈值法和截断阈值法,并给出了相应的代码示例和效果对比图。这些方法在图像处理中应用广泛,可用于简化图像、文字识别等场景。
2025-10-22 00:02:52
1399
原创 【图像处理】CMKY色彩空间
摘要: CMKY是印刷行业的减法色彩模型,由青(C)、品红(M)、黄(Y)和黑(K)四色油墨组成,通过吸收光线实现色彩呈现。其原理是油墨叠加减少反射光波长,需黑色(K)补充纯黑。CMKY以百分比量化,适用于实体印刷,而RGB采用加法模型,适合屏幕显示。两者色域、应用场景不同:RGB用于数字设计,CMKY用于印刷品。转换时需通过公式调整,如RGB到CMKY需计算补色值。专业设计需根据输出介质选择色彩模式。
2025-10-19 23:46:31
656
原创 【图像处理】Gamma矫正
文章摘要: Gamma校正是一种用于补偿显示设备非线性亮度输出的技术。由于显示器(特别是CRT)的亮度输出与输入电压呈2.2次幂关系,导致渲染图像比实际更暗。Gamma校正通过在输出前对颜色值应用1/2.2次幂运算,使最终显示效果与线性计算一致。OpenGL提供两种实现方式:启用内置sRGB帧缓冲或手动在着色器中进行校正。此外,sRGB纹理需要特殊处理以避免二次校正。正确应用Gamma校正能显著提升光照计算的真实性和图像质量。
2025-10-19 22:11:13
1038
2
原创 【图像处理】rgb和srgb
AdobeRGB和sRGB是两种常见的色彩空间标准,主要区别在于色彩范围不同。AdobeRGB比sRGB多出35%的色彩范围,能呈现更丰富的色彩细节,适合专业打印输出。而sRGB则是网络和多数显示设备的通用标准,兼容性更强。选择时需考虑使用场景:若主要用于网络分享,建议选择sRGB以确保色彩准确;若有专业打印需求,则应选择AdobeRGB以获得更广的色彩表现。需要注意的是,AdobeRGB可无损转换为sRGB,但反之则不行。
2025-10-19 21:21:31
1062
1
原创 【图像处理】图像色彩空间 Lab、YCbCr、HSV
本文介绍了Lab、YCbCr和HSV三种色彩空间的特点及相互转换方法。Lab是设备无关的色彩空间,模拟人类视觉感知,适用于颜色校正;YCbCr分离亮度与色度,适合图像压缩;HSV以直观的色相、饱和度、亮度描述颜色,便于调整。文章提供了C++实现代码,包括结构体定义和各色彩空间转换公式,如BGR转YCbCr、Lab的详细步骤。这些转换在图像处理、视频编码等领域有广泛应用。
2025-10-18 22:44:27
967
原创 【图像处理】图片的前向映射与后向映射
图像几何变换中的前向映射与后向映射是两种关键方法。前向映射直接将原图像素坐标通过函数映射到目标图像,但可能导致无效浮点坐标、像素重叠或空洞问题(如旋转30度后出现蜂窝状空隙)。后向映射则反向计算目标图像素对应的原图位置,有效避免空洞和重叠问题,但同样需要插值处理小数坐标。实际应用中,不改变图像尺寸的变换适合前向映射,而旋转/缩放等操作多采用后向映射(如OpenCV默认的双线性插值)。两种方法各有适用场景,核心都在于建立精准的像素坐标映射关系。
2025-10-18 22:14:09
1053
原创 【图像处理】常见图像插值算法与应用
博客围绕图像处理中的插值算法展开,介绍了最近邻(简单但易失真)、双线性(平衡速度与平滑度)、三次样条(平滑但复杂)三种插值算法的原理,说明了向前(易漏点)、向后(主流,无漏点)两种映射方法,并提供了基于 OpenCV 进行实践
2025-10-18 21:58:12
1283
原创 【图像处理】图片alpha预乘
本文详细介绍了alpha通道的原理与应用。alpha通道通过0-255的灰度值控制像素透明度,0为全透明,255为不透明,中间值实现半透明效果。文章讲解了alpha混合的计算公式,包括归一化处理和RGB通道权重混合方法,并通过具体示例展示了不同透明度下的混合效果。重点阐述了Premultiplied Alpha技术,它能解决纹理过滤时的颜色失真问题,使透明图片在缩放旋转时显示正常。最后指出游戏引擎通常会对PNG纹理进行Premultiplied Alpha预处理,以保证渲染效果的正确性。
2025-10-18 20:31:44
1013
原创 【OpenGL】openGL 法线贴图
本文介绍了法线贴图的核心原理与实现方法。法线贴图通过RGB值存储表面法线信息(0-1映射到-1-1),其蓝色调源于法线通常指向曲面外侧。关键难点在于将切线空间法线转换到模型空间,这需要构建由切线(T)、副切线(B)和法线(N)组成的TBN矩阵。文章详细推导了通过三角形边和UV差值计算切线与副切线的数学过程,并提供了C++实现代码。在着色器实现部分,需新增切线和副切线缓冲区,通过TBN矩阵的转置完成空间转换。文末给出了完整的绘制代码框架,包括缓冲区创建、纹理加载和矩阵计算等关键步骤。
2025-09-21 22:47:17
801
1
原创 【OpenGL】openGL 透明
本文介绍了OpenGL中透明效果的实现方法。首先讲解了alpha通道的概念,指出alpha值代表不透明度(1为不透明,0为透明),并演示了如何通过修改着色器输出实现透明效果。接着重点讨论了透明渲染的顺序问题,指出当多个半透明物体重叠时,渲染顺序会影响最终颜色表现。常见解决方案包括对透明物体按深度排序后渲染,但这种方法存在性能问题。文章还介绍了更高级的顺序无关透明技术,如深度剥离等。最后给出了混合函数的设置方法和完整实现代码,包括顶点着色器、片段着色器和Qt框架下的OpenGL组件代码。
2025-09-21 19:26:22
1075
原创 【OpenGL】openGL VBO 索引
本文介绍了OpenGL中使用索引缓冲(VBO Indexing)的原理和实现方法。主要内容包括: 索引原理:通过索引缓冲实现顶点复用,避免重复存储公共顶点,每个三角形通过3个整数索引指向属性缓冲中的顶点数据。 公共顶点处理:当顶点所有属性在两个三角形中都相同时才视为公共顶点,否则需要复制顶点属性。特别以法线为例说明了平滑曲面和硬边处理的不同方式。 实现方法: 创建ELEMENT_ARRAY_BUFFER存储索引 使用glDrawElements代替glDrawArrays 提供索引缓冲填充算法,将多个属性索
2025-09-21 19:24:00
848
原创 【OpenGL】openGL 基本着色
本文介绍了OpenGL中基础光照模型的实现。首先讲解了法线向量的概念,包括三角形法线和顶点法线的计算方法,以及在OpenGL中的使用方式。接着重点阐述了漫反射光照分量的原理,通过计算光线与表面法线的夹角来模拟光强变化,并加入了材质颜色和光源强度的影响。随后引入环境光分量来模拟间接光照效果。最后简要提及镜面反射分量,为后续高级着色技术做铺垫。教程通过伪代码和渲染效果图展示了不同光照分量的实现方法和视觉效果,为初学者构建了基本的光照模型框架。
2025-09-21 19:21:00
1252
原创 【OpenGL】texture 纹理
本文介绍了在OpenGL中使用纹理贴图的方法。首先讲解了UV坐标的概念,它是连接模型顶点与纹理图像的桥梁,每个顶点需要包含U、V两个纹理坐标。接着介绍了如何通过QT库加载BMP格式的纹理图片,并处理OpenGL与QT坐标系差异的问题。在OpenGL实现部分,详细说明了片段着色器和顶点着色器中处理纹理的代码逻辑,包括纹理采样器的使用和UV坐标的传递。最后展示了如何为立方体模型添加纹理坐标数据,并完成纹理缓冲对象的创建与绑定。文章还提及了纹理加载和过滤的相关技术细节,为OpenGL初学者提供了完整的纹理贴图实现
2025-09-20 23:29:16
992
原创 【OpenGL】绘制彩色立方体
本教程介绍了使用OpenGL绘制彩色立方体的方法。首先将一个立方体分解为12个三角形(36个顶点),通过顶点缓冲区定义这些顶点数据。接着为每个顶点随机生成RGB颜色值,创建颜色缓冲区并绑定到着色器。在顶点着色器中接收颜色属性并传递给片段着色器,最终实现立方体的彩色渲染效果。教程还指出了当前方法的不足:顶点数据重复占用内存,并预告后续课程将介绍动态加载模型和顶点索引优化技术。通过修改顶点和颜色数据,可以灵活控制立方体的外观。
2025-09-20 23:26:41
879
原创 【OpenGL】openGL常见矩阵
本文介绍了3D图形学中的齐次坐标和变换矩阵。齐次坐标通过引入w分量区分点(w=1)和方向(w=0),使平移变换对方向无效。变换矩阵采用4x4矩阵左乘顶点实现,包括平移矩阵、单位矩阵和缩放矩阵。平移矩阵通过在第四列设置位移量实现位移;单位矩阵保持向量不变;缩放矩阵通过对角线元素控制各轴缩放比例。文章提供了C++(GLM)、QT和GLSL中的矩阵运算代码示例,强调矩阵运算顺序的重要性。
2025-09-20 23:12:47
1154
原创 【OpenGL】shader 着色器
OpenGL着色器编程入门摘要:本文介绍了OpenGL可编程管线中的着色器基础。现代OpenGL需要两个基本着色器:顶点着色器(处理每个顶点)和片段着色器(处理每个采样点)。着色器使用GLSL语言编写,运行时动态编译。文章详细展示了如何从文件加载着色器代码(.vert和.frag文件)、编译着色器、创建着色器程序并链接的过程。顶点着色器示例演示了GLSL 3.3核心语法,通过layout声明输入顶点位置属性。编译完成后可删除中间着色器对象以释放资源。这些操作为后续图形渲染管线奠定了基础。
2025-09-20 22:56:02
1316
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅