OpenGLES 之纹理

 我来答
完满且闲雅灬抹香鲸P
2022-07-20 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:70.7万
展开全部
        纹理是一个用来保存图像的颜色元素值的OpenGL ES 缓存。它可以控制一个渲染的三角形中每个像素的颜色。纹理可以使用任何图像,包括树木、云彩、机器、人物。当把纹理应用到几何图形中后,会使渲染的场景更显自然,会使三角形的复杂组合像是真实的物体而不是只有颜色的面。在纹理的缓存中保存的颜色值可能要耗费很多的内存,所以,应该尽量使用最小的图像来产生可以接受的渲染结果。

          当用一个图片初始化一个纹理缓存后,在这个图像中的每个像素变成了纹理中的一个纹素。与像素类似。纹素保存颜色数据。要说区别。就是像素有具体的尺寸大小,而纹素没有,纹素存在于一个没有尺寸的数学坐标系中。

         纹理坐标系中有一个命为 S 和 T 的2D轴(上面画错了,x当成是S,y当成是T)。在一个纹理中无论有多少纹素,纹理的尺寸永远在S轴上是从 0 - 1.0 ,在T 轴上 是从 0 - 1.0.比如:一张图片宽是100像素,高是100像素。那S轴的1.0就表示截取图片的宽是100像素,如果S轴是0.5,则只会截取到图片的宽是50像素,图片只会显示一半。

         每个顶点坐标的X、Y、Z坐标被转换成视口坐标后,GPU会设置转换生成的三角形内的每个像素的颜色。转换几何形状数据为帧缓存中的颜色像素的渲染步骤叫做 点阵化(rasterizing) ,每个颜色像素叫做 片元(franment) 。

          程序需要指定怎么对齐纹理和顶点,以便让GPU知道每个片元的颜色由哪些纹素来决定。这个对齐又叫做映射(mapping)。

         其实每个顶点除了给定的X、Y、Z坐标,每个顶点还给出了U和V的坐标值。U坐标会映射纹理中的S轴,V坐标会映射到T轴。

         GPU会根据每个片元的U、V位置从绑定的纹理中选择纹素。这个过程叫做取样。取样会把纹理的S和T坐标系中与每个渲染的三角形的顶点的U、V坐标匹配起来。例如:一个U、V坐标为{0.5,0.5}的片元会被当前绑定的纹理中最接近中间位置的纹素着色。

1.定义一个结构体

2.设置上下文,创建绑定顶点缓存区域,分配内存

3.创建绑定顶点索引缓存区域,分配内存

4.设置属性

5.添加纹理

6.绘制

7.最后进行销毁

8.运行结果

在这个demo第二个例子中我们还用到了一个新的函数,这里说一下。

https://github.com/weixin1/OpenGLES-Learn
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式