运用GL屏幕画图基本效果

阴阳师火了之后,市面上很多游戏又多了一个模块——画符抽卡,可以通过使用Unity自带GL类来实现这个功能,上面一篇博客Unity研究 GL中有关于GL类的初步解析。今天直接来分析需求 看看阴阳师画符抽卡是怎么实现的:

1,绘图——鼠标按下进行拖拽,在屏幕中留下鼠标轨迹。
2,存图——松开鼠标,绘制的图片按比例映射到Texture上。

Unity的GL是通过两点之间连线来构成图像的。

1,通过一个集合List<Vector3> allPoints存储鼠标在屏幕上经过的轨迹(视图坐标系)

if (Input.GetMouseButton(0)){Vector3 tmpView = Camera.main.ScreenToViewportPoint(Input.mousePosition);allPoints.Add(tmpView);}

2,遍历集合,将集合中具有前后关系的点连接起来(点动成线)

/// <summary>/// 使用GL画线的回调/// </summary>public void OnRenderObject(){//创建材质球CreateLineMaterial();//激活第一个着色器通过(在本例中,我们知道它是唯一的通过)lineMaterial.SetPass(0);//设置正交投影GL.LoadOrtho();// 开始画线  在Begin——End之间写画线方式GL.Begin(GL.LINES);GL.Color(Color.red);for (int i = 1; i < allPoints.Count; i++){Vector3 tmpFront = allPoints[i - 1];Vector3 tmpBack = allPoints[i];GL.Vertex(tmpFront);GL.Vertex(tmpBack);}GL.End();//渲染出栈}

3,按照比例映射到图片上

  public void Texture(){//像素根据比例映射图片paintText = new Texture2D(300, 400);for (int i = 1; i < allPoints.Count; i++){Vector3 tmpFront = allPoints[i-1];Vector3 tmpBack = allPoints[i];float frontX = paintText.width * tmpFront.x;float frontY = paintText.height * tmpFront.y;float backX = paintText.width * tmpBack.x;float backY = paintText.height * tmpBack.y;//两点之间的缝隙用插值连起来for (int j = 0; j < 100; j++){int tmpX =(int)Mathf.Lerp(frontX, backX, j / 100.0f);int tmpY =(int)Mathf.Lerp(frontY, backY, j / 100.0f);paintText.SetPixel(tmpX, tmpY, Color.red);}//paintText.SetPixel(xx, yy, Color.red);}paintText.Apply();
}

Unity3D 运用GL屏幕画图(阴阳师画符)相关推荐

  1. unity3d 使用GL 方式画线

    这个是画线部分 private Vector3[] linePoints;public int m_LineCount;public int m_PointUsed;public void Rende ...

  2. 【Unity实战100例】Unity屏幕画线,Unity屏幕画图HSJ绘画工具

    这个工具,可以自定义线的粗细,可以自定义线的颜色,可以设置背景桌面的颜色,可以单线撤销也可以清楚屏幕,可以画虚线实线折线. 目录 一:制作画线工具 1.初始化左上右下点 2.绘制逻辑

  3. 计算机思维流程图怎么做,迅捷画图怎么画思维导图和流程图

    迅捷画图怎么画思维导图和流程图 2018-11-14 11:32:44 0点赞 4收藏 0评论 迅捷画图是一个功能强大的在线绘图工具,可以在线绘制思维导图.流程图.网络拓扑图.组织结构图.工作流程图. ...

  4. mysql 5.5.48源码安装_centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc...

    centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc 还剩 5页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲 ...

  5. 运行时绘制Gizmo——关于unity3D的GL图像库的使用(非常详细)

    转载来源:https://www.cnblogs.com/JLZT1223/p/6094404.html ps: 想了解一下GL库,但是都没有什么好的资料. 好不容易找到一个详细的博客,格式还全乱,阅 ...

  6. 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1.     画直线 Ø  增加'直线'菜单项,建立类向导: Ø  对CXX ...

  7. 海龟画图----python画美队盾牌

    之前上选修课老师首先讲的就是海龟画图,后来还是稍微研究一下了的,海龟画图其实还是蛮有趣的,随便改一些数据可以画出意料之外的惊喜. 开发环境 :win10 + pycharm 需要的包就是turtle, ...

  8. 新手如何使用迅捷画图来画思维导图

    导语: 新手想要了解怎么画思维导图,首先就是要学会临摹思维导图模板,熟悉各种专业思维导图的样式.然而,这只是它的形,此时的思维导图是没有"灵魂"的,所以我们还需要在这个形里面注入& ...

  9. 迅捷画图怎样画思维导图、流程图

    迅捷画图是一个在线绘制思维导图.流程图的工具,很多人在绘制思维导图或者流程图时都停在了第一步,因为不知如何下手,今天就告诉大家如何彻底解决思维导图.流程图不会画的难题. 如何使用迅捷画图画思维导图.流 ...

  10. 可以直接在屏幕上面涂画的pointofix安装及汉化

    一.软件下载 官方网址https://www.pointofix.de/ 二.进入下载页面,需要下载安装文件和语言包两个文件 三.网站还提供了一个语言设置小程序,但我没用 四.安装 1.打开<p ...

最新文章

  1. 定义AI,麦卡锡、图灵、乔丹...我们听谁的?
  2. PB的setfilter()和modify()一些不为人知的技巧
  3. 去除Activity的标题栏以及全屏显示
  4. 使用glbindbuffers产生访问冲突_预防IP地址冲突的应对方案,你知道吗?
  5. inline-block,一个奇怪的问题:中间div掉下来
  6. 收藏一个Excel甘特图模板
  7. 临床阅片有新招!华为与维卓致远发布三维影像阅片系统
  8. 惯性导航算法(三)-方向余弦矩阵(下)
  9. CDN月95计费方式
  10. apk编辑器找Android,教你用安卓神器APK编辑器去除程序广告
  11. 云端系统服务器是什么,云端服务器是什么-云端服务器介绍
  12. 网站浏览器崩溃原因分析
  13. mvc 从客户端 中检测到有潜在危险的 Request 值
  14. 打印skb内容的一小段代码
  15. RTSP 协议详细介绍
  16. 妻子和鱼----海子
  17. 不想做CEO的程序员不是好码农?
  18. 【Python百日进阶-数据分析】Day137 - plotly旭日图:go.sunburst()实例
  19. 解决vmware中虚拟机打不开,报错Intel VT-x禁用的问题
  20. php scada,监控系统SCADA软件—KingSCADA

热门文章

  1. 服务器3D场景建模(三):体素场景(一)
  2. 我只用了3步,实现了一个逼真的3D场景渲染
  3. 专门记java语言单词app_赞Android背单词软件app源码(非常实用)
  4. html制作页面书签的步骤,网页制作基础教程(二)html标签
  5. smartbi试用体验
  6. 【操作系统-Windows】组件服务 DCOM 配置编辑安全属性
  7. 【技术文档】jeecg3.8-maven 开发环境搭建入门
  8. Pocket PC、Pocket PC phone、Smartphone的区别
  9. P5960 【模板】差分约束算法
  10. 用python画钢铁侠_秒变钢铁侠,这个暑假,用 Python 让自己成为超级英雄!