Unity3D中OpenGL2怎么承接修改中差评

请教如何在Unity里面在二维平面绘图?(比如使用OpenGL)_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:72,276贴子:
请教如何在Unity里面在二维平面绘图?(比如使用OpenGL)收藏
本人想在Unity里面实现二维平面绘图功能(不仅画点线,还可以按照公式画各种曲线,并且可以实时更新)想了很多种方案,最后试试OpenGL(因为网上资料很多都写了这个)然而,使用openGL以后:无论选择什么颜色,显示都是 粉红,下面是代码:using UnityEusing System.Cpublic class color_line : MonoBehaviour {private static Mpublic Color[] colors = new Color[6] {Color.blue,Color.cyan,Color.green,Color.magenta,Color.red,Color.yellow};void Awake(){mat = new Material(&Shader \&Lines/Colored Blended\& {& +&SubShader { Pass { & +& Blend SrcAlpha OneMinusSrcAlpha & +& ZWrite Off Cull Off Fog { Mode Off } & +& BindChannels {& +& Bind \&vertex\&, vertex Bind \&color\&, color }& +&} } }&);mat.hideFlags = HideFlags.HideAndDontSmat.shader.hideFlags = HideFlags.HideAndDontS}void OnPostRender(){GL.PushMatrix();mat.SetPass(0);GL.LoadOrtho();GL.Begin(GL.LINES);for (int i = 0; i & 12; i++){GL.Color(colors[i % 6]);GL.Vertex3(0, i / 12f, 0);GL.Vertex3(1, i / 12f, 0);}GL.End();GL.PopMatrix();}void OnApplicationQuit(){DestroyImmediate(mat);}// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}}哪儿出错了呢?请各位前辈大神指教~或者是否还有其他方法呢?
粉红色是你的线没材质了,你赋值一个材质给他
仔细看了下,你写了材质,可能是材质那里出错了,总之都是渲染相关的
有好心人讲解下吗?
你是新手加入我们,问题随时解答,您是高手!群管您当,欢迎新人大神加入unityQ群
登录百度帐号推荐应用21044人阅读
unity3d中让物体显示和隐藏的方法
gameObject.renderer.enabled&&&&&&&GameObject.Destroy()&&&&&&&&gameObject.active&&&&&&&
using UnityE
using System.C
public class test : MonoBehaviour
GameObject m_
// Use this for initialization
void Start ()
m_obj = GameObject.Find(&box&);
// Update is called once per frame
void Update ()
void OnGUI()
if (Input.GetKeyDown(KeyCode.W))
// m_obj.enabled =
m_obj.SetActive(true);
if (Input.GetKeyDown(KeyCode.A))
m_obj.SetActive(false);
// m_obj.enabled =
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:45951次
排名:千里之外
转载:23篇
(1)(1)(6)(17)由于项目特殊需求,需要在unity中使用一些OpenGL的东西来绘制图形(PS:其实就是有一个拖尾算法只有OpenGL版本~~~懒得改了,直接在unity中使用OpenGL算了)。所以琢磨咯下如何在unity中使用OpenGL,刚找到点入门级的调用,藉此分享一下。
关于Unity和OpenGL
这里不多过的介绍概念知识,unity在脚本中预留了这样一些功能:
1.OnPostRender函数(PS:这个函数只有挂在摄像机上才生效,可以在摄像机做渲染前做进一步操作)
2.GL接口(PS:开放的功能不多,比如GL模式只有LINES=1,QUADS=7,TRIANGLES=4,TRIANGLE_STRIP=5四种,当然也有可能是其他功能也可以用,只是没有列出来,以及一些OpenGL标准中的一些函数并未提供)
OpenGL的基本使用
恩,既然要使用OpenGL,那就先来说说OpenGL的基本格式:
GL.Begin(OpenGL的预置模式);
各种添加顶点(GL.Vertex),设置顶点颜色(GL.Color),贴图(GL.MultiTexCoord)等操作
废话不多说了,直接上代码,一共就几行,很简单的:
using UnityE
public class TestScripts : MonoBehaviour
void Awake()
void OnPostRender()
// 清屏操作(可以不要此操作,这样场景中的对象才可以显示)
GL.Clear(true, true, Color.black);
// 将当前矩阵变换对象push缓存下来,防止自己的操作影响到其它渲染操作
GL.PushMatrix();
// 设置绘制模式为2D绘制,设置这个模式之后屏幕左下角变为(0,0),屏幕右上角变为(1,1),注释之后变为3D真实坐标
GL.LoadOrtho();
// 绘制过程
for (var i = 0; i & mat.passCount; ++i)
// 设置shader,用过OpenGL ES2.0的同志应该知道,这个类似于combine glsl的过程,这里么有自己写,用的unity自带的sprite的shader
// 由于shader可能存在多个pass通道,所以采用遍历的方式将每个通道都绘制一遍,当然有些shader只有一个通道,比如这个自带的sprite的shader
// 也可以设置成SetPass(0),就是使用默认的第一个通道进行渲染
mat.SetPass(i);
// 设置绘制模式为线条模式(这个模式每两个顶点为一组)
GL.Begin(GL.LINES);
// 设置顶点颜色(设置下一个顶点的颜色,如果后面没有更改,继续保留这个颜色属性直至被更改)
GL.Color(Color.red);
// 向GL中增加一个点的坐标
GL.Vertex3(0, 0, 0);
GL.Vertex3(0.5F, 0.5F, 0);
GL.Color(Color.white);
GL.Vertex3(0.5F, 0.5F, 0);
GL.Color(Color.blue);
GL.Vertex3(1F, 0F, 0);
// 通知GL关闭当前绘制模式
// 将矩阵对象还原,与之前的push操作相对应
GL.PopMatrix();
具体效果如下:因为清了屏,所以背景是黑色的,如果注释掉,也可以显示原有3D场景的内容
这只是一个简单的OpenGL使用教程,更多的操作请自行了解OpenGL的相关教程,函数名字都是一样的,照搬就行了....
阅读(...) 评论()2613人阅读
Unity3D(40)
var cursorTexture : Texture2D;
var cursorMode : CursorMode = CursorMode.A
var hotSpot : Vector2 = Vector2.
function OnMouseEnter () {
Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
function OnMouseExit () {
Cursor.SetCursor(null, Vector2.zero, cursorMode);
以上是更改某一物体上的图标样式。
若要更改整个场景的默认鼠标样式可以在Edit-&Project Setting-&Player-&Default Cursor中设置,如下图。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:85429次
积分:1377
积分:1377
排名:千里之外
原创:51篇
转载:12篇
评论:13条
(2)(1)(1)(1)(1)(2)(2)(2)(3)(4)(1)(3)(1)(3)(8)(14)(1)(6)(2)(1)(2)(1)(1)(1)

我要回帖

更多关于 qq修改密码中心 的文章

 

随机推荐