SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。目前支持windows,linux, wince,mac os,非正式地支持symbian os。它被广泛的用于许多著名的游戏。最著名的游戏是赢得LIUNX组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。 ·SDL具体应用相关文章 K歌之王 windows mobile用sdl做视频显示 (有相关Windows Mobile下使用的SDL库可以下载) simple direct layer(sdl) 和 symbian ·SDL参考资料
SDL_Renderer,SDL_Window,SDL_Surface和SDL_Texture之间有什么区别,以及它们是如何相关的?先看一段代码: #include <iostream>#include <SDL2/SDL.h>int main(){ /* Starting SDL */ if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } /* Create a Window */ SDL_Window *window = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); if (window == nullptr) { std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl; return 1; } /* Create a Render */ SDL_Renderer *render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (render == nullptr) { std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl; return 1; } /* Load bitmap image */ SDL_Surface *bmp = SDL_LoadBMP("./Tutorial/res/Lesson1/hello.bmp"); if (bmp == nullptr) { std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl; return 1; } /* Upload surface to render, and then, free the surface */ SDL_Texture *texture = SDL_CreateTextureFromSurface(render, bmp); SDL_FreeSurface(bmp); if (texture == nullptr){ std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl; return 1; } /* Draw the render on window */ SDL_RenderClear(render); // Fill render with color SDL_RenderCopy(render, texture, NULL, NULL); // Copy the texture into render SDL_RenderPresent(render); // Show render on window /* Wait 2 seconds */ SDL_Delay(5000); /* Free all objects*/ SDL_DestroyTexture(texture); SDL_DestroyRenderer(render); SDL_DestroyWindow(window); /* Quit program */ SDL_Quit(); return 0;} 我使用的是Twinklebear教程(在SDL Wiki上提供),并且还查看了SDL Wiki文档和一些书籍。但他们都假设我知道这些定义。 SDL_WindowSDL_Window是保存有关窗口本身的所有信息的结构体:大小,位置,全屏幕,边框等。 SDL_Renderer
SDL_Textures和SDL_Surface的SDL_Renderer呈现SDL_Texture,其存储一个元件的像素信息.它的新版本SDL_Surface 您可以使用SDL_Surface *转换为SDL_Texture SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer, SDL_Surface* surface) 在此之后,SDL_Surface应该被释放 SDL_FreeSurface( SDL_Surface* surface ) 另一个重要的区别是SDL_Surface使用软件渲染(通过CPU)同时SDL_Texture使用硬件渲染(通过GPU). SDL_RectSDL中最简单的结构。它只包含四个参数:x,y保持着位置w, h保持宽度和高度。 需要注意的0, 0是SDL中的左上角。所以更高的y值意味着更低,右下角会有坐标x + w, y + h SDL_Renderer也可能会绑定到表面,而不仅是绑定到窗口,链接:https://wiki./SDL_CreateSoftwareRenderer 考虑SDL_Window为物理像素,以及SDL_Renderer存储设置/上下文的地方。所以创建了一堆资源,并将它们挂在渲染器上; 然后当它准备好时,告诉渲染器将它们放在一起并将结果发送到窗口。 |
|