OPenGL 画连续线

anye1235 2012-07-16 04:13:31
用opengl 响应鼠标移动画线 显示的线条是断断续续的不连续
代码如下:
glBegin(GL_LINE_STRIP);
glVertex2f(PrePos_x,PrePos_y);//起点
glVertex2f(CurrPos_x,CurrPos_y);//终点
glEnd();


后来用点来画 结果画出来的是扇形:
glBegin(GL_LINE_STRIP);
for(int i=m_uVertexNum;i<m_vVerter.size()-1;++i) //m_vVerter是移动时所存储点集
{
glVertex2f(TransePos_x(m_vVerter[i].x),TransePos_y(m_vVerter[i].y));

}
glEnd();

众神有何良策解决???????
...全文
58 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
【资源说明】 基于C++和OpenGL实现的简单图工具源码+项目说明+sln解决方案.zip 通过橡皮筋技术动态绘制图形;Liang-Barsky 算法批量裁剪直线、折线连续Bezier曲线、B样条的绘制;椭圆的中点 Bresenham 算法绘制椭圆。 `C++` 源代码文件。如果在 `visual studio 2022` 以外的其它 `OpenGL` 环境运行,使用以下代码文件即可。 ```txt │ simple-openl-graphic-tool.cpp # 主要源代码文件,项目入口 │ lineClipping.cpp # Liang-Barsky 算法 │ lineClipping.h │ onMidPointEllispe.cpp # Bresenham 算法 │ onMidPointEllispe.h ``` ## 页面展示 Liang-Barsky 算法裁剪折线 ![](./readme_img/f2.png) 右键选中 `Line` 菜单开始图折线 ![](./readme_img/img21.png) 键盘按 `P` 进入`图`模式。(注意,所有键盘操作必须切换到英语输入法,中文输入法无效) 之后按住左键确定开始点,按住左键拖动线,松开左键即确定一个顶点,再按左键即可继续。 ![](./readme_img/img22.png) 键盘按 `E` 进入`裁剪`模式。(注意,所有键盘操作必须切换到英语输入法,中文输入法无效) 按住左键拖动裁剪框,松开确定框的大小。 ![](./readme_img/img23.png) 键盘按 `C` ,程序将使用 `Liang-Barsky` 算法按照裁剪框裁剪折线。 ![](./readme_img/img24.png) Bezier 曲线 右键菜单选中选项,进入 `Bezier` 曲线模式。按住左键拖动线。 ![](./readme_img/imgb1.png) 按E结束曲线的绘制,自动显示相应的 `Bezier` 曲线。 ![](./readme_img/imgb2.png) ![](./readme_img/imgb3.png) B 样条 右键菜单选中选项,进入 `B 样条` 模式。按住左键拖动线。 更多详情见项目说明!!! 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
一、第一个OPENGL程序...................................................................................................................4 1.1、OPENGL的优点..........................................................................................................................4 1.2、OPENGL的安装..........................................................................................................................4 1.3、第一个OPENGL程序.................................................................................................................5 二、点、直线和多边形..........................................................................................................................8 2.1、点、直线和多边形.....................................................................................................................8 2.2、在OPENGL中指定顶点.............................................................................................................8 2.3、绘制曲线....................................................................................................................................9 三、绘制几何图形的细节....................................................................................................................14 3.1、关于点......................................................................................................................................14 3.2、关于直线..................................................................................................................................14 3.3、关于多边形...............................................................................................................................15 四、颜色的选择...................................................................................................................................20 4.1、RGBA颜色...............................................................................................................................20 4.2、索引颜色..................................................................................................................................21 4.3、指定清除屏幕用的颜色...........................................................................................................22 4.4、指定着色模型...........................................................................................................................23 五、 三维变换.....................................................................................................................................25 5.1、模型变换和视图变换...............................................................................................................25 5.2、投影变换..................................................................................................................................26 5.3、视口变换..................................................................................................................................28 5.4、操作矩阵堆栈...........................................................................................................................29 5.5、综合举例..................................................................................................................................29 六、 动制作.....................................................................................................................................33 6.1、双缓冲技术...............................................................................................................................33 6.2、实现连续...........................................................................................................................34 6.3、垂直同步..................................................................................................................................35 6.4、计算帧速..................................................................................................................................36 七、光照...............................................................................................................................................40 7.1、建立光照模型...........................................................................................................................40 7.2、法线向量..................................................................................................................................41 7.3、控制光源..................................................................................................................................41 7.4、控制材质..................................................................................................................................43 7.5、选择光照模型...........................................................................................................................43 7.6、示例程序..................................................................................................................................44 八、 显示列表.....................................................................................................................................48 8.1、分配显示列表编号...................................................................................................................48 8.2、创建显示列表...........................................................................................................................49 8.3、调用显示列表...........................................................................................................................49 8.4、销毁显示列表...........................................................................................................................50 九、 混合.............................................................................................................................................56 9.1、源因子和目标因子...................................................................................................................56 9.2、二维图形混合举例...................................................................................................................57 9.3、实现三维混合...........................................................................................................................58 十、像素操作.......................................................................................................................................63 10.1、BMP文件格式简单介绍........................................................................................................63 10.2、简单的OPENGL像素操作.....................................................................................................64 10.3、GLREADPIXELS的用法和举例................................................................................................64 10.4、GLDRAWPIXELS的用法和举例..............................................................................................68 10.5、GLCOPYPIXELS的用法和举例................................................................................................70 十一、 纹理.........................................................................................................................................73 11.1、启用纹理和载入纹理.............................................................................................................74 11.2、纹理坐标................................................................................................................................75 11.3、纹理参数................................................................................................................................76 11.4、纹理对象................................................................................................................................77 11.5、示例程序................................................................................................................................79 十二、 测试操作.................................................................................................................................87 12.1、剪裁测试................................................................................................................................87 12.2、ALPHA测试.............................................................................................................................88 12.3、模板测试................................................................................................................................92 12.4、深度测试................................................................................................................................97 十三、 OPENGL的状态....................................................................................................................99 13.1、取得OPENGL的当前状态...................................................................................................100 13.2、设置OPENGL状态...............................................................................................................101 13.3、OPENGL工作流程................................................................................................................101 十四、 OPENGL的版本和OPENGL的扩展...............................................................................104 14.1、OPENGL的版本....................................................................................................................104 14.2、OPENGL的扩展....................................................................................................................106 14.3、工具软件...............................................................................................................................110 十五、OPENGL的演进....................................................................................................................112 15.1、从原始一点的办法开始.......................................................................................................112 15.2、顶点数组...............................................................................................................................115 15.3、顶点缓冲区对象...................................................................................................................118 十六、显示文字.................................................................................................................................122 16.1、OPENGL版的“HELLO, WORLD!”.........................................................................................122 16.2、指定字体...............................................................................................................................124 16.3、显示中文...............................................................................................................................126 16.4、纹理字体...............................................................................................................................128 16.5、应用纹理字体的实例:飘动的旗帜...................................................................................132 16.6、缓冲机制...............................................................................................................................137 16.7、轮廓字体...............................................................................................................................141
第1章绪论 1.1计算机图形学及其相关概念 1.2计算机图形学的发展 1.2.1计算机图形学学科的发展 1.2.2图形硬件设备的发展 1.2.3图形软件的发展 1.3计算机图形学的应用 1.3.1计算机辅助设计与制造 1.3.2计算机辅助绘图 1.3.3计算机辅助教学 1.3.4办公自动化和电子出版技术 1.3.5计算机艺术 1.3.6在工业控制及交通方面的应用 1.3.7在医疗卫生方面的应用 1.3.8图形用户界面 1.4计算机图形学研究动态 1.4.1计算机动 1.4.2地理信息系统 1.4.3人机交互 1.4.4真实感图形显示 1.4.5虚拟现实 1.4.6科学计算可视化 1.4.7并行图形处理 第2章计算机图形系统及图形硬件 2.1计算机图形系统概述 2.1.1计算机图形系统的功能 2.1.2计算机图形系统的结构 2.2图形输入设备 2.2.1键盘 2.2.2鼠标器 2.2.3光笔 2.2.4触摸屏 2.2.5操纵杆 2.2.6跟踪球和空间球 2.2.7数据手套 2.2.8数字化仪 2.2.9图像扫描仪 2.2.10声频输入系统 2.2.11视频输入系统 2.3图形显示设备 2.3.1阴极射线管 2.3.2CRT图形显示器 2.3.3平板显示器 2.3.4三维观察设备 2.4图形显示子系统 2.4.1光栅扫描图形显示子系统的结构 2.4.2绘制流水线 2.4.3相关概念 2.5图形硬拷贝设备 2.5.1打印机 2.5.2绘图仪 2.6OpenGL图形软件包 2.6.1OpenGL的主要功能 2.6.2OpenGL的绘制流程 2.6.3OpenGL的基本语法 2.6.4一个完整的OpenGL程序 第3章用户接口与交互式技术 3.1用户接口设计 3.1.1用户模型 3.1.2显示屏幕的有效利用 3.1.3反馈 3.1.4一致性原则 3.1.5减少记忆量 3.1.6回退和出错处理 3.1.7联机帮助 3.1.8视觉效果设计 3.1.9适应不同的用户 3.2逻辑输入设备与输入处理 3.2.1逻辑输入设备 3.2.2输入模式 3.3交互式绘图技术 3.3.1基本交互式绘图技术 3.3.2三维交互技术 3.4OpenGL中橡皮筋技术的实现 3.4.1基于鼠标的实现 3.4.2基于键盘的实现 3.5OpenGL中拾取操作的实现 3.6OpenGL的菜单功能 第4章图形的表示与数据结构 4.1基本概念 4.1.1基本图形元素 4.1.2几何信息与拓扑信息 4.1.3坐标系 4.1.4实体的定义 4.1.5正则集合运算 4.1.6平面多面体与欧拉公式 4.2三维形体的表示 4.2.1多边形表面模型 4.2.2扫描表示 4.2.3构造实体几何法 4.2.4空间位置枚举表示 4.2.5八叉树 4.2.6BSP树 4.2.7OpenGL中的实体模型函数 4.3非规则对象的表示 4.3.1分形几何 4.3.2形状语法 4.3.3粒子系统 4.3.4基于物理的建模 4.3.5数据场的可视化 4.4层次建模 4.4.1段与层次建模 4.4.2层次模型的实现 4.4.3OpenGL中层次模型的实现 第5章基本图形生成算法 5.1直线的扫描转换 5.1.1数值微分法 5.1.2中点Bresenham算法 5.1.3Bresenham算法 5.2圆的扫描转换 5.2.1八分法圆 5.2.2中点Bresenham圆算法 5.3椭圆的扫描转换 5.3.1椭圆的特征 5.3.2椭圆的中点Bresenham算法 5.4多边形的扫描转换与区域填充 5.4.1多边形的扫描转换 5.4.2边缘填充算法 5.4.3区域填充 5.4.4其他相关概念 5.5字符处理 5.5.1点阵字符 5.5.2矢量字符 5.6属性处理 5.6.1线型和线宽 5.6.2字符的属性 5.6.3区域填充的属性 5.7反走样 5.7.1过取样 5.7.2简单的区域取样 5.7.3加权区域取样 5.8在OpenGL中绘制图形 5.8.1点的绘制 5.8.2直线的绘制 5.8.3多边形面的绘制 5.8.4OpenGL中的字符函数 5.8.5OpenGL中的反走样 第6章二维变换及二维观察 6.1基本概念 6.2基本几何变换 6.2.1平移变换 6.2.2比例变换 6.2.3旋转变换 6.2.4对称变换 6.2.5错切变换 6.2.6二维图形几何变换的计算 6.3复合变换 6.3.1二维复合平移变换和比例变换 6.3.2二维复合旋转变换 6.3.4其他二维复合变换 6.3.5相对任一参考点的二维几何变换 6.3.6相对于任意方向的二维几何变换 6.3.7坐标系之间的变换 6.3.8光栅变换 6.3.9变换的性质 6.4二维观察 6.4.1基本概念 6.4.2?用户坐标系到观察坐标系的变换 6.4.3?窗口到视区的变换 6.5?裁剪 6.5.1?点的裁剪 6.5.2直线段的裁剪 6.5.3多边形的裁剪 6.5.4其他裁剪 6.6OpenGL中的二维观察变换 第7章三维变换及三维观察 7.1三维变换的基本概念 7.1.1几何变换 7.1.2三维齐次坐标变换矩阵 7.1.3平面几何投影 7.2三维几何变换 7.2.1三维基本几何变换 7.2.2三维复合变换 7.3三维投影变换 7.3.1正投影 7.3.2斜投影 7.4透视投影 7.4.1一点透视 7.4.2二点透视 7.4.3三点透视 7.5观察坐标系及观察空间 7.5.1观察坐标系 7.5.2观察空间 7.6三维观察流程 7.6.1用户坐标系到观察坐标系的变换 7.6.2平行投影的规范化投影变换 7.6.3透视投影的规范化投影变换 7.7三维裁剪 7.7.1关于规范化观察空间的裁剪 7.7.2齐次坐标空间的裁剪 7.8OpenGL中的变换 7.8.1矩阵堆栈 7.8.2模型视图变换 7.8.3投影变换 7.8.4实例 第8章曲线与曲面 8.1基本概念 8.1.1曲线/曲面数学描述的发展 8.1.2曲线/曲面的表示要求 8.1.3曲线/曲面的表示 8.1.4插值与逼近 8.1.5连续性条件 8.1.6样条描述 8.2三次样条 8.2.1自然三次样条 8.2.2Hermite插值样条 8.3Bezier曲线/曲面 8.3.1Bezier曲线的定义 8.3.2Bezier曲线的性质 8.3.3Bezier曲线的生成 8.3.4Bezier曲面 8.4B样条曲线/曲面 8.4.1B样条曲线 8.4.2B样条曲线的性质 8.4.3B样条曲面 8.5有理样条曲线/曲面 8.5.1NURBS曲线/曲面的定义 8.5.2有理基函数的性质 8.5.3NURBS曲线/曲面的特点 8.6曲线/曲面的转换和计算 8.6.1样条曲线/曲面的转换 8.6.2样条曲线/曲面的离散生成 8.7OpenGL生成曲线/曲面 8.7.1Bezier曲线/曲面函数 8.7.2GLU中的B样条曲线/曲面函数 第9章消隐 9.1深度缓存器算法 9.2区间扫描线算法 9.3深度排序算法 9.4区域细分算法 9.5光线投射算法 9.6BSP树 9.7多边形区域排序算法 9.8OpenGL中的消隐处理 第10章真实感图形绘制 10.1简单光照模型 10.1.1环境光 10.1.2漫反射光 10.1.3镜面反射光 10.1.4光强衰减 10.1.5颜色 10.2基于简单光照模型的多边形绘制 10.2.1恒定光强的多边形绘制 10.2.2Gouraud明暗处理 10.2.3Phong明暗处理 10.3透明处理 10.4产生阴影 10.5模拟景物表面细节 10.5.1用多边形模拟表面细节 10.5.2纹理的定义和映射 10.5.3凹凸映射 10.6整体光照模型与光线追踪 10.6.1整体光照模型 10.6.2Whitted光照模型 10.6.3光线跟踪算法 10.6.4光线跟踪反走样 10.7 OpenGL中的光照与表面绘制函数 10.7.1 OpenGL点光源 10.7.2 OpenGL全局光照 10.7.3 OpenGL表面材质 10.7.4 OpenGL透明处理 10.7.5 OpenGL表面绘制 10.7.6 实例 10.8 OpenGL中的纹理映射

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧