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非常方便。

v5server:香港+美国机房,优质CN2网络云服务器,7折优惠,低至35元/月

v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...

819云(240元)香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP

819云是我们的老熟人了,服务器一直都是稳定为主,老板人也很好,这次给大家带来了新活动,十分给力 香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP 240元0官方网站:https://www.819yun.com/ 特惠专员Q:442379204套餐介绍套餐CPU内存硬盘带宽IP价格香港CN2 (特价)E5 随机分配16G1T 机械20M3IP240元/月日本CN2 (...

hostkey荷兰/俄罗斯机房,GPU服务器

hostkey应该不用说大家都是比较熟悉的荷兰服务器品牌商家,主打荷兰、俄罗斯机房的独立服务器,包括常规服务器、AMD和Intel I9高频服务器、GPU服务器、高防服务器;当然,美国服务器也有,在纽约机房!官方网站:https://hostkey.com/gpu-dedicated-servers/比特币、信用卡、PayPal、支付宝、webmoney都可以付款!CPU类型AMD Ryzen9 ...

glpushmatrix为你推荐
eagleeye《鹰眼》的男主角是谁?orphanremoval我的电脑开机时自检,出现许多这样的字样:Deleting orphan file record segment XXXX (XXXX代表数字)。腾讯年终奖腾讯qq一年盈利多少?模式识别算法研究生研究方向:数据挖掘、模式识别、启发算法这三者哪个有前途鄂n鄂A鄂B鄂C鄂D鄂E鄂F鄂G鄂H鄂J鄂K鄂L鄂M鄂N鄂P鄂Q鄂R鄂S鄂T鄂U分别代表湖北省的哪些城市qq网络硬盘如何使用QQ网络硬盘数据统计分析表怎样建立数据透视表和数据分析表?腾讯技术腾讯简介----棋牌论坛三个知名的游戏相关论坛,要求有网址的!天翼校园宽带天翼校园宽带怎么样用手机打开这个页面登陆
虚拟主机服务器 香港虚拟主机 com域名 上海vps 怎么申请域名 博客主机 godaddy续费优惠码 wordpress技巧 英语简历模板word 日本空间 免费ftp站点 亚洲小于500m 数字域名 asp免费空间申请 网站木马检测工具 lol台服官网 可外链相册 银盘服务 台湾google 美国盐湖城 更多