【发布时间】:2015-10-30 01:02:38
【问题描述】:
我希望我的游戏引擎美观整洁,而不是编写一堆多余的代码,我宁愿包含为我做这件事的函数。
void draw::image(){
SDL_Surface *bmp = SDL_LoadBMP("C:\\Users\\Joe\\Documents\\Visual Studio 2013\\Projects\\SDL_APP1\\map1.bmp");
SDL_Texture*bmptx;
SDL_Renderer * renderer = SDL_CreateRenderer(_window, -1, 0);
bmptx = SDL_CreateTextureFromSurface(renderer, bmp);
SDL_FreeSurface(bmp);
SDL_RenderCopy(renderer, bmptx, NULL, NULL);
SDL_RenderPresent(renderer);
}
void draw::text(string q, float x, float y, float w, float h){
SDL_SetRenderDrawColor(renderer, 64, 64, 64, 255);
SDL_RenderDrawLine(renderer, x, y, w, h);
SDL_RenderPresent(renderer);
}
我的问题是我不知道如何格式化 text() 函数,以便它绘制到与 image() 函数相同的渲染器。我想要它,以便在我的主循环中,我可以调用 text 和 image 函数,它们将同时绘制到同一个渲染器。这样我就不必直接将它们编码到我的主循环中。旁注我使用的是 SDL 2。
【问题讨论】:
-
谷歌批处理主题;创建一个批处理类,允许根据渲染类型(例如三角形条、三角形扇形、线、点等)以及其他属性(例如法线)构建不同类型的批处理,然后有一个 BatchManager 类来管理所有批处理,这些批处理将然后一次性将所有完整批次发送到渲染设备。您可能还需要另一个类来处理所有存储,例如 AssetStorage。在我的 OpenGL 着色器引擎中,这就是设置的方式。虽然我没有使用 SDL,但你应该能够实现同样的目标。
标签: c++ textures rendering sdl game-engine