[Texture]详解什么是Texture
前言
开篇废话
嗨咯大家好呀,时隔多日,小黑又和大家见面咯,最近懒癌犯了,而且技术上边倍受打击,所以回了家只想着睡觉休息,所以希望大家见谅见谅啦。
Unity版本
Unity 2020.4.4f1
正题
什么是Texture
中文翻译叫纹理,先说一下一个纹理是如何被渲染到屏幕上的 ,起初纹理存在硬盘(RAM)里,它被cpu解压缩(数据在cpu端它就只是二进制数据),如果想要显示它,那么数据将会被发送给(上传到cpu和gpu之间的通信可以理解成client和server之间的通信)GPU,gpu 将它放在 显存(VARM) 中,显存中有一块内存区域叫做RenderBuffer(渲染缓存),RenderBuffer只是数据缓存,它还不能用作Texture渲染,尽管它现在已经是一个texture了,在这里 texture等待着被渲染,当要渲染这个Texture时,会生成一个FrameBuffer(帧缓存),当这个帧缓存被添加到默认的帧缓存物体上FrameBufferObject时,它就会被绘制到屏幕,FrameBuffer指向的是显存中RenderBuffer的地址,简单的来说,RenderBuffer需要附加在FrameBuffer上,它才能是五颜六色的图片,否则它只是显存上的一堆数据,关于RenderBuffer和FrameBuffer可以看下边这些文章
Linux OpenGL 实践篇-10-framebuffer,
OpenGL ES学习之路(3.1) 着色器渲染过程、渲染方式、FrameBuffer与RenderBuffer.
-
最后总结下来就简单的几句话描述:
- 渲染过程其实非常复杂耗时,所幸有许多框架精心主导着这部分数据传输,微软有DirectX,苹果有Metal ,还有OpenGL,WebGL等.在unity中通过调用Graphic.Blit()来渲染一个Texture.。
注意
我相信很多人和我一样,一直以为Texture是左下角开始然后前往右上角渲染的,这其实是Unity给我们做了处理,事实可能并非如此哟,有兴趣的可以查一下。