html网站免费模板下载,烟台优化网站公司哪家好,门户网站建设周期,电子商务网站建设和推广 范文1.简介
在SDL中#xff0c;本身只支持加载BMP格式的图片SDL_LoadBMP#xff0c;如果想要加载别的格式图片#xff0c;需要编译SDL_image库。
SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数#xff0c;但是它们的使用方式和返回值有所不同。
IMG_Load和…1.简介
在SDL中本身只支持加载BMP格式的图片SDL_LoadBMP如果想要加载别的格式图片需要编译SDL_image库。
SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数但是它们的使用方式和返回值有所不同。
IMG_Load和IMG_LoadTexture区别
IMG_Load返回一个指向加载后的 SDL_Surface 结构的指针IMG_LoadTexture返回的是SDL_Texture指针。IMG_LoadTexture加载后的图像数据直接存储在GPU显存中因此能够更快地在屏幕上渲染。这对于实时渲染效果更好的应用程序如游戏非常有用。IMG_Load函数返回的是一个SDL表面对象指针需要使用SDL_FreeSurface函数释放内存IMG_LoadTexture函数返回的是一个SDL纹理对象指针需要使用函数SDL_DestroyTexture释放内存。
总之如果您只需要加载图片并将其作为普通表面使用可以选择 IMG_Load。但如果您需要在游戏中实时渲染图片例如滚动、缩放或切割那么使用 IMG_LoadTexture 会更方便。
2.SDL_image编译
下载源码GitHub - libsdl-org/SDL_image at SDL2
首先编译SDL库SDL2 简单介绍以及Windows开发环境搭建-CSDN博客
使用CMake指定编译好的SDL2的库路径和include路径。 然后打开VS直接编译就行了编译好生成库如下图所示。 3.配置环境
先拷贝SDL_image的头文件和库文件到目的目录下如下图所示 VS的配置请看SDL2 简单介绍以及Windows开发环境搭建-CSDN博客
目录4.配置跟配置SDL库一样的配置。
4.示例 IMG_Load代码示例
#include iostream
#include SDL.h
#include SDL_image.h#undef main
int main()
{SDL_Window *window SDL_CreateWindow(demo, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);// 得到 SDL_Window 的 SDL_SurfaceSDL_Surface *pWindowSurface SDL_GetWindowSurface(window);//向渲染区域涂成白色SDL_FillRect(pWindowSurface, NULL,SDL_MapRGB(pWindowSurface-format, 0xFF, 0xFF, 0xFF));// 根据图片创建一个 SDL_SurfaceSDL_Surface *pImageSurface IMG_Load(D:/2.png);bool bQuit false;SDL_Event windowEvent;while (!bQuit) {while (SDL_PollEvent(windowEvent)){switch (windowEvent.type){case SDL_QUIT:bQuit true;break;default:break;}}// 将 pImageSurface 的内容传输到 上SDL_BlitSurface(pImageSurface, NULL, pWindowSurface, NULL);//SDL_BlitScaled(pImageSurface, NULL, pWindowSurface, NULL);// 上屏操作将 Surface 内容显示到屏幕上SDL_UpdateWindowSurface(window);}SDL_FreeSurface(pImageSurface);SDL_DestroyWindow(window);return 0;
}如果想要图片自适应窗口请使用SDL_BlitScaled。 IMG_LoadTexture代码示例
#include iostream
#include SDL.h
#include SDL_image.h#undef main
int main()
{SDL_Window *window SDL_CreateWindow(demo, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);SDL_Renderer* renderer SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);SDL_Texture* texture IMG_LoadTexture(renderer, D:/2.png);if (texture NULL) {SDL_Log(Failed to load image: %s, SDL_GetError());return 1;}SDL_RenderClear(renderer);SDL_RenderCopy(renderer, texture, NULL, NULL);SDL_RenderPresent(renderer);SDL_Delay(3000);SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);return 0;
}