您的位置 首页 > 德语词汇

textured是什么意思?用法、例句(SDL 彻底理解纹理(Texture))

大家好,关于textured是什么意思?用法、例句很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于SDL 彻底理解纹理(Texture)的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

1、这是SDL系列文章的第五篇,本文将彻底让你理解什么是纹理。并带你深入探讨SDL的几个重要概念SDL_Window、SDL_Render、SDL_Surface与SDL_Texture。在文章的最后向你展示SDL如何通过SDL_Texture进行渲染。

2、对于前面系列文章感兴趣的同学可以通过下面的链接查看:(在简书上搜索音视频专家)

textured是什么意思?用法、例句(SDL 彻底理解纹理(Texture))

3、另外,我在慕课网分享了音视频免费入门课程,有兴趣的同学可以去学习更多的音视频知识。

4、在SDL系列文章的第二篇里,我详细的介绍了SDL渲染的工作原理。即在SDL_Render对象中有一个视频缓冲区,该缓冲区我们称之为SDL_Surface,它是按照像素存放图像的。我们一般把真彩色的像素称为RGB24数据。也就是说,每一个像素由24位组成,每8位代表一种颜色,像素的最终颜色是由RGB三种颜色混合而成的。

5、SDL_Texture与SDL_Surface相似,也是一种缓冲区。只不过它存放的不是真正的像素数据,而是存放的图像的描述信息。当渲染纹理时,SDL以这些描述信息为数据,底层通过OpenGL、D3D或Metal操作GPU,最终绘制出与SDL_Surface一样的图形,且效率更高(因为它是GPU硬件计算的)。

6、看了以上的介绍,是不是对纹理有了一个清楚的认识了?

7、介绍完SDL_Surface和SDL_Texture后,我们再看下SDL_Window与SDL_Render。

8、SDL_Window代表的是窗口的逻辑概念,它是存放在主内存中的一个对象。所以当我们调用SDLAPI创建窗口后,它并不会被显示出来。

9、SDL_Render是渲染器,它也是主存中的一个对象。对Render操作时实际上分为两个阶段:

10、一、渲染阶段。在该阶段,用户可以画各种图形渲染到SDL_Surface或SDL_Texture中;

11、二、显示阶段。参SDL_Texture为数据,通过OpenGL操作GPU,最终将SDL_Surfce或SDL_Texture中的数据输出到显示器上。

12、通过上面的介绍,我们就将SDL_Window、SDL_Render、SDL_Surface与SDL_Texture之间的关系梳理清楚了,下面我们来看一下如何使用SDL_Texture。

13、SDL提供了非常好用的操作SDL_Texture的方法,下面我们来重点介绍一下使用SDL_Texute的基本步骤。

14、SDL_Texture*SDL_CreateTexture(SDL_Renderer*renderer,\nUint32format,intaccess,intw,inth)

format:指明像素格式,可以是YUV,也可以是RGB

15、access:指明Texture的类型。可以是Stream(视频),也可以是Target一般的类型。

16、intSDL_RenderCopy(SDL_Renderer*renderer,\nSDL_Texture*texture,constSDL_Rect*srcrect,constSDL_Rect*dstrect)

srcrect:指定Texture中要渲染的一部分。如果将Texture全部输出,可以设置它为NULL。

17、voidSDL_DestroyTexture(SDL_Texture*texture)例子

下面这个例子非常简单,我这里就不做特别的说明了。对这个程序看不懂的同学可以看我之前的几篇SDL的相关文章。

18、#include"SDL.h"/*MovingRectangle*/intmain(intargc,char*argv[]){\nSDL_Window*window;\nSDL_Renderer*renderer;\nSDL_Texture*texture;\nSDL_Eventevent;\nSDL_Rectr;if(SDL_Init(SDL_INIT_VIDEO)<0){\nSDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"Couldn'tinitializeSDL:%s",SDL_GetError());return3;\n}\nwindow=SDL_CreateWindow("SDL_CreateTexture",\nSDL_WINDOWPOS_UNDEFINED,\nSDL_WINDOWPOS_UNDEFINED,1024,768,\nSDL_WINDOW_RESIZABLE);\nr.w=100;\nr.h=50;\nrenderer=SDL_CreateRenderer(window,-1,0);\ntexture=SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,1024,768);while(1){\nSDL_PollEvent(&event);if(event.type==SDL_QUIT)break;\nr.x=rand()%500;\nr.y=rand()%500;\nSDL_SetRenderTarget(renderer,texture);\nSDL_SetRenderDrawColor(renderer,0x00,0x00,0x00,0x00);\nSDL_RenderClear(renderer);\nSDL_RenderDrawRect(renderer,&r);\nSDL_SetRenderDrawColor(renderer,0xFF,0x00,0x00,0x00);\nSDL_RenderFillRect(renderer,&r);\nSDL_SetRenderTarget(renderer,NULL);\nSDL_RenderCopy(renderer,texture,NULL,NULL);\nSDL_RenderPresent(renderer);\n}\nSDL_DestroyRenderer(renderer);\nSDL_Quit();return0;\n}小结

本文重点介绍了SDL_Window、SDL_Render、SDL_Surface以及SDL_Texture之间的关系。搞清楚它们之前的关系对于理解SDL渲染起着至关重要的作用。

19、大家一定要仔细的理解文章中所讲的内容,在我后序的文章中,尤其是后面介绍播放器相关内容时,都要用到现在所讲的这些内容。

20、希望本文能对你有所帮助,谢谢!

21、音视频免费入门课(在慕客网imooc上搜索音视频

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023