glpushmatrix请教unity 制作tilemap的流程
glpushmatrix 时间:2021-06-05 阅读:(
)
opengl 使用glLoadIdentity()后不显示问题
glLoadIdentity把当前矩阵置为单位矩阵,相当于投影矩阵被清了,你想要的效果估计是这样:
?glPushMatrix();
?glTranslatef(0,2,0);
?glutSolidCube(1);//这个立方体能显示
?glPopMatrix();
?//glLoadIdentity();//加上这句话下面的立方体就不能显示,去掉后能显示
?glPushMatrix();
?glColor3f(1,0,0);
?glTranslatef(0,-1,0);
?glutSolidCube(1);
?glPopMatrix();救命啊!!谁能解释一下OpenGL里最基本的几个问题?满意加100分
1 、 在opengl中,函数glTranslatef的作用就是移动坐标原点。
对应的3个参数对应着3个坐标轴。
就是使绘图坐标系相对世界坐标系沿x,y,z轴移动x,y,z个单位。
如果你调用一次glTranslatef(1.0f,0.0f,0.0f)然后画一个小球,接着再调用次glTranslatef(0.0f,1.0f,0.0f)再画一个小球。
此时,两个小球中,一个在另外一个正右方。
所以,如果要使两个小球分别处于x、y轴,则需要在第二次画之前调用glLoadIdentity()函数,使坐标原点归位。
另外,此处的坐标系为右手坐标系。
切记切记。
glLoadIdentity()将当前的矩阵清零,不可再恢复;就是令当前绘图坐标系从新回到世界坐标系的位置,另他们重合。
glPushMatrix()将当前矩阵压入栈中,当前矩阵不清零,其下的操作及显示在当前的矩阵下继续进行,在使用glPopMatrix()后,当前的矩阵恢复到调用glPushMatrix()之前,在两者之间的各种变换不在起作用。
2、 glPushMatrix、glPopMatrix操作其实就相当于栈里的入栈和出栈。
例如你当前的坐标系原点在你电脑屏幕的左上方。
现在你调用glPushMatrix,然后再调用一堆平移、旋转代码等等,然后再画图。
那些平移和旋转都是基于坐上角为原点进行变化的。
而且都会改变坐标的位置,经过了这些变化后,你的坐标肯定不再左上角了。
那如果想恢复怎么办呢?这时就调用glPopMatrix从栈里取出一个“状态”了,这个状态就是你调用glPushMatrix之前的那个状态。
就如很多opengl的书上所讲:调用glPushMatrix其实就是把当前状态做一个副本放入堆栈之中。
3、常规说来,顺序的调用多个glRotatef函数,这些旋转效果就会是叠加的不是独立的了。
glRotatef(angle,x,y,z):和glTranslatef()属于一类函数,glTranslatef()是平移,glRotatef是旋转,就是使当前绘图坐标系绕世界坐标系的x,y,z旋转angle个角度,x,y,z的值非0既1,比如glRotatef(30,1.0f,0.0f,0.0f)就是绕x轴旋转30度,glRotatef(30,1.0f,1.0f,0.0f)就是绕x,y的夹角线旋转30度。
请教unity 制作tilemap的流程
首先渲染mask精灵,把src color(就是mask精灵)设置为GL_ONE,并且把destination color(一个空的buffer)设置为GL_ZERO。
所以,效果就是简单的把mask图片显示来。
接下来,我们渲染日历图片精灵。
把src color(日历)设置为GL_DST_ALPHA。
意思是,看看mask图片的当前alpha值是多少,如果是0(完全透明),那么就显示mask的。
如果是1(完全不透明),那么就显示日历图片。
(译者注:如果大家对此不明白,可以参考这个链接)。
然后把dst color(the mask)设计成GL_ZERO,这样的话,之前渲染上去的mask就消失了。
很酷吧!你可能会觉得我们只需要先把mask精灵渲染上去,然后再渲染日历精灵,并且指定这两个精灵的blendFunc就行了。
可是,实际上这样是行不通的!
上面所提到的混合算法,当精灵下面还有一些精灵在渲染的时候就会出问题---比如背景图片上面有一个精灵。
这是因为,这里作了一个假设,在上面做完1那个步骤之后,imgae buffer里面只存在唯一一张图片,那就是mask。
(这个假设当然是不正确的啦,因为你要切换日历图片对不对?)
因此,我们需要一种方式,可以建立一个干净的“黑板”,然后在那执行1,2步来制作一个遮罩纹理。
很幸运的是,用RenderTexture非常方便。
Hostodo 算是比较小众的海外主机商,这次九月份开学季有提供促销活动。不过如果我们有熟悉的朋友应该知道,这个服务商家也是比较时间久的,而且商家推进活动比较稳,每个月都有部分活动。目前有提供机房可选斯波坎、拉斯维加斯和迈阿密。从机房的地理位置和实际的速度,中文业务速度应该不是优化直连的,但是有需要海外业务的话一般有人选择。以前一直也持有他们家的年付12美元的机器,后来用不到就取消未续约。第一、开...
数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...
酷番云怎么样?酷番云就不讲太多了,介绍过很多次,老牌商家完事,最近有不少小伙伴,一直问我台湾VPS,比较难找好的商家,台湾VPS本来就比较少,也介绍了不少商家,线路都不是很好,有些需求支持Windows是比较少的,这里我们就给大家测评下 酷番云的台湾VPS,支持多个版本Linux和Windows操作系统,提供了CN2线路,并且还是原生IP,更惊喜的是提供的是无限流量。有需求的可以试试。可以看到回程...
glpushmatrix为你推荐
csonline2csol2房间人数是多少?能超过32人吗?求大神解答,尽可能详细,我需要CSOL2的情报谢谢。我mac地址克隆路由器的Mac地址克隆有什么作用?匹配函数Excel中vlookup函数数据匹配怎么用水晶易表水晶报表是什么?主要有什么用处?chrome系统谷歌Chrome OS可以用来做什么?y码亚洲码男女尺码是多少?y码S`M`XXL`L`XL身高体重分别是多少?vga接口定义主板上的VGA接口有什么用?vga接口定义主板VGA接口两排针脚的循序是怎么排列star413匡威jack star 的后标是不是真的?如图
哈喽图床 美国php主机 光棍节日志 info域名 河南服务器 工作站服务器 免费cdn hkt 空间登陆首页 国外在线代理服务器 华为k3 免费稳定空间 买空间网 国内空间 国外代理服务器 umax tracker服务器 phpinfo 免费的加速器 免费网站加速 更多