我希望将我的游戏组件与HTML游戏对齐。
我的SDL_Window
将SDL_Renderer
呈现所有组件。这些组件是一些按钮,图像和矩形区域像html画布。
我想让我的游戏在这个画布中呈现,因为我将实现一个“世界”和一个“相机”,它只影响这个“画布”,而围绕“画布”的GUI “将独立于相机进行渲染。
如何让渲染器渲染窗口内的特定区域?
我无法用数学做到这一点,因为我想要在画布内渲染的每一个纹理,但是远离视点,都要隐藏。
部分代码:
SDL_Window* gWindow = SDL_CreateWindow("Title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
SDL_Renderer* gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED);
while (true) {
SDL_RenderClear(gRenderer);
render_gui(); // i can do this part
render_game_inside_canvas(); // ?
SDL_RenderPresent(gRenderer);
}
答案 0 :(得分:0)
您可以使用glViewport()调用来执行此操作:
Point2d pos = get_pos();
Vector2d sz = get_size();
glViewport(pos.x, screen_height-pos.y-sz.dy, sz.dx, sz.dy);
obj.render();
glViewport(0,0,screen_width, screen_height);
有点需要你知道你整个屏幕的尺寸是多少...... (奇怪的计算是必需的,因为glViewport保持屏幕颠倒: - )