Use viewport instead of width/height.
PiperOrigin-RevId: 911942457 Change-Id: I2d6d52a8bb6b1b10d69956cce9e5d7f62e7d1f1c
This commit is contained in:
committed by
Copybara-Service
parent
ec50260e26
commit
d5c5a989f2
@@ -54,15 +54,13 @@ void MjrFilamentRenderer::Render(const mjrRect& viewport,
|
||||
reqs[0].scene = scene_bridge_->GetScene();
|
||||
reqs[0].draw_mode = scene_bridge_->GetDrawMode();
|
||||
reqs[0].camera = scene_bridge_->GetCamera();
|
||||
reqs[0].width = viewport.width;
|
||||
reqs[0].height = viewport.height;
|
||||
reqs[0].viewport = viewport;
|
||||
|
||||
mjr_defaultRenderRequest(&reqs[1]);
|
||||
reqs[1].scene = imgui_bridge_->GetScene();
|
||||
reqs[1].draw_mode = mjDRAW_MODE_COLOR;
|
||||
reqs[1].camera = imgui_bridge_->GetCamera(viewport.width, viewport.height);
|
||||
reqs[1].width = viewport.width;
|
||||
reqs[1].height = viewport.height;
|
||||
reqs[1].viewport = viewport;
|
||||
filament_context_->Render(reqs);
|
||||
}
|
||||
}
|
||||
@@ -95,15 +93,13 @@ void MjrFilamentRenderer::ReadPixels(mjrRect viewport, unsigned char* rgb,
|
||||
reqs[0].scene = scene_bridge_->GetScene();
|
||||
reqs[0].draw_mode = scene_bridge_->GetDrawMode();
|
||||
reqs[0].camera = scene_bridge_->GetCamera();
|
||||
reqs[0].width = viewport.width;
|
||||
reqs[0].height = viewport.height;
|
||||
reqs[0].viewport = viewport;
|
||||
|
||||
mjr_defaultRenderRequest(&reqs[1]);
|
||||
reqs[1].scene = imgui_bridge_->GetScene();
|
||||
reqs[1].draw_mode = mjDRAW_MODE_COLOR;
|
||||
reqs[1].camera = imgui_bridge_->GetCamera(viewport.width, viewport.height);
|
||||
reqs[1].width = viewport.width;
|
||||
reqs[1].height = viewport.height;
|
||||
reqs[1].viewport = viewport;
|
||||
|
||||
if (rgb) {
|
||||
mjrRenderTargetConfig config;
|
||||
|
||||
@@ -110,13 +110,14 @@ mjrFrameHandle FilamentContext::Render(
|
||||
}
|
||||
|
||||
// If the window size has changed, we need to reacquire the swap chain.
|
||||
if (request.width != window_width_ || request.height != window_height_) {
|
||||
if (request.viewport.width != window_width_ ||
|
||||
request.viewport.height != window_height_) {
|
||||
if (window_width_ != 0 && window_height_ != 0) {
|
||||
engine_->destroy(window_swap_chain_);
|
||||
window_swap_chain_ = engine_->createSwapChain(config_.native_window);
|
||||
}
|
||||
window_width_ = request.width;
|
||||
window_height_ = request.height;
|
||||
window_width_ = request.viewport.width;
|
||||
window_height_ = request.viewport.height;
|
||||
}
|
||||
|
||||
if (!render_began) {
|
||||
|
||||
@@ -486,7 +486,7 @@ void SceneView::Configure(const mjModel* model) {
|
||||
void DoRender(filament::Renderer* renderer, const mjrRenderRequest& request) {
|
||||
SceneView::RenderRequest scene_view_request;
|
||||
scene_view_request.draw_mode = request.draw_mode;
|
||||
scene_view_request.viewport = {0, 0, request.width, request.height};
|
||||
scene_view_request.viewport = request.viewport;
|
||||
scene_view_request.camera = request.camera;
|
||||
SceneView* scene_view = SceneView::downcast(request.scene);
|
||||
scene_view->Render(renderer, scene_view_request);
|
||||
@@ -499,7 +499,7 @@ void DoReadPixels(filament::Renderer* renderer,
|
||||
|
||||
SceneView::RenderRequest scene_view_request;
|
||||
scene_view_request.draw_mode = request.draw_mode;
|
||||
scene_view_request.viewport = {0, 0, request.width, request.height};
|
||||
scene_view_request.viewport = request.viewport;
|
||||
scene_view_request.camera = request.camera;
|
||||
scene_view_request.target = render_target;
|
||||
SceneView* scene_view = SceneView::downcast(request.scene);
|
||||
|
||||
@@ -370,9 +370,8 @@ struct mjrRenderRequest {
|
||||
// The camera from which to render the scene.
|
||||
mjrCamera camera;
|
||||
|
||||
// The dimensions of the output image.
|
||||
int width;
|
||||
int height;
|
||||
// The viewport into which to render the image.
|
||||
mjrRect viewport;
|
||||
|
||||
// The render target into which to render the image. If nullptr, the image
|
||||
// will be rendered to the window (as previously configured in
|
||||
|
||||
Reference in New Issue
Block a user