c++ SDL - 在窗口的特定区域内呈现
c++ SDL - Render inside a window's particular area
我想像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);
}
你可以
像这样用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使屏幕颠倒:-)
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- SDL 窗口不会弹出
- 将QGraphicsItem的移动区域限制在多边形区域内
- SDL 操纵杆按钮按下/C++
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 在 Linux 中存储区域设置名称的缓冲区大小应该是多少?
- 两个连续的 OpenMP 并行区域会相互减慢速度
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- SDL 映像:无法打开映像,仅显示错误消息
- 提升区域设置规范化带状字符,但不规范化重音
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- "Undefined symbols for architecture x86_64" 在 SDL 2 (macOS) 中
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 为什么 SDL 在 Mac 上比 Linux 慢得多?
- 我可以将新的 std::tuple 放入内存映射区域,并在以后读回吗?
- 英特尔将指令存储在重叠的内存区域
- 如何给主窗口区域DKGRAY_BRUSH?
- c++ SDL - 在窗口的特定区域内呈现