Refactor SaveScreenshot into a more useful RenderToTexture function.

Removes a few unused functions from helpers library.

PiperOrigin-RevId: 846661437
Change-Id: I815ffe1990098dedb71f694af088d85294f9c7de
This commit is contained in:
Haroon Qureshi
2025-12-19 03:33:07 -08:00
committed by Copybara-Service
parent 522ff1cd80
commit d1fd11bccd
5 changed files with 40 additions and 64 deletions
+22 -11
View File
@@ -14,10 +14,8 @@
#include "experimental/platform/renderer.h"
#include <chrono>
#include <string>
#include <cstddef>
#include "experimental/platform/helpers.h"
#include <mujoco/mujoco.h>
namespace mujoco::platform {
@@ -50,18 +48,31 @@ void Renderer::Deinit() {
void Renderer::Render(const mjModel* model, mjData* data,
const mjvPerturb* perturb, mjvCamera* camera,
const mjvOption* vis_option, int width, int height) {
if (initialized_) {
mjv_updateScene(model, data, vis_option, perturb, camera, mjCAT_ALL,
&scene_);
if (!initialized_) {
return;
}
mjrRect main_viewport = {0, 0, width, height};
mjr_render(main_viewport, data ? &scene_ : nullptr, &render_context_);
mjv_updateScene(model, data, vis_option, perturb, camera, mjCAT_ALL,
&scene_);
const mjrRect viewport = {0, 0, width, height};
mjr_render(viewport, &scene_, &render_context_);
}
void Renderer::SaveScreenshot(const std::string& filename, int width,
int height) {
SaveScreenshotToWebp(width, height, &render_context_, filename);
void Renderer::RenderToTexture(const mjModel* model, mjData* data,
mjvCamera* camera, int width, int height,
std::byte* output) {
if (!initialized_) {
return;
}
const mjrRect viewport = {0, 0, width, height};
mjr_setBuffer(mjFB_OFFSCREEN, &render_context_);
mjv_updateCamera(model, data, camera, &scene_);
mjr_render(viewport, &scene_, &render_context_);
mjr_readPixels((unsigned char*)output, nullptr, viewport, &render_context_);
mjr_setBuffer(mjFB_WINDOW, &render_context_);
}
} // namespace mujoco::platform