Merge pull request #3340 from devshahofficial:devshahofficial/mjr-renderer-info
PiperOrigin-RevId: 948183711 Change-Id: I28b256eca22e86ec0ba05a4fa26458d678aca130
This commit is contained in:
@@ -5480,6 +5480,34 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
|
||||
),
|
||||
doc='Set default mjrContext.',
|
||||
)),
|
||||
('mjr_defaultRendererInfo',
|
||||
FunctionDecl(
|
||||
name='mjr_defaultRendererInfo',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='info',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjrRendererInfo'),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Set default mjrRendererInfo.',
|
||||
)),
|
||||
('mjr_getRendererInfo',
|
||||
FunctionDecl(
|
||||
name='mjr_getRendererInfo',
|
||||
return_type=ValueType(name='void'),
|
||||
parameters=(
|
||||
FunctionParameterDecl(
|
||||
name='info',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='mjrRendererInfo'),
|
||||
),
|
||||
),
|
||||
),
|
||||
doc='Get active renderer information.',
|
||||
)),
|
||||
('mjr_makeContext',
|
||||
FunctionDecl(
|
||||
name='mjr_makeContext',
|
||||
|
||||
@@ -11005,6 +11005,27 @@ STRUCTS: Mapping[str, StructDecl] = dict([
|
||||
),
|
||||
),
|
||||
)),
|
||||
('mjrRendererInfo',
|
||||
StructDecl(
|
||||
name='mjrRendererInfo',
|
||||
declname='struct mjrRendererInfo_',
|
||||
fields=(
|
||||
StructFieldDecl(
|
||||
name='renderer',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='char', is_const=True),
|
||||
),
|
||||
doc='renderer family: classic, filament, noop',
|
||||
),
|
||||
StructFieldDecl(
|
||||
name='backend',
|
||||
type=PointerType(
|
||||
inner_type=ValueType(name='char', is_const=True),
|
||||
),
|
||||
doc='graphics backend: opengl, vulkan; empty if uninitialized',
|
||||
),
|
||||
),
|
||||
)),
|
||||
('mjrVertexAttribute',
|
||||
StructDecl(
|
||||
name='mjrVertexAttribute',
|
||||
|
||||
@@ -79,6 +79,7 @@ using MjLogMessage = ::mjLogMessage;
|
||||
|
||||
// From mjrender.h
|
||||
using MjrRect = ::mjrRect;
|
||||
using MjrRendererInfo = ::mjrRendererInfo;
|
||||
using MjrContext = ::mjrContext;
|
||||
using MjrVertexAttribute = ::mjrVertexAttribute;
|
||||
|
||||
|
||||
+28
-1
@@ -143,7 +143,6 @@ void MjrContextWrapper::Free() {
|
||||
// mjr_freeContext is safe to call multiple times.
|
||||
InterceptMjErrors(mjr_freeContext)(ptr_);
|
||||
}
|
||||
|
||||
} // namespace _impl
|
||||
|
||||
namespace {
|
||||
@@ -241,10 +240,38 @@ PYBIND11_MODULE(_render, pymodule, pybind11::mod_gil_not_used()) {
|
||||
X(charWidthBig);
|
||||
#undef X
|
||||
|
||||
// ==================== MJRRENDERERINFO ======================================
|
||||
py::class_<raw::MjrRendererInfo> mjrRendererInfo(pymodule, "MjrRendererInfo");
|
||||
mjrRendererInfo.def(py::init([]() {
|
||||
raw::MjrRendererInfo info;
|
||||
mjr_defaultRendererInfo(&info);
|
||||
return info;
|
||||
}));
|
||||
mjrRendererInfo.def("__copy__", [](const raw::MjrRendererInfo& other) {
|
||||
return raw::MjrRendererInfo(other);
|
||||
});
|
||||
mjrRendererInfo.def("__deepcopy__",
|
||||
[](const raw::MjrRendererInfo& other, py::dict) {
|
||||
return raw::MjrRendererInfo(other);
|
||||
});
|
||||
DefineStructFunctions(mjrRendererInfo);
|
||||
mjrRendererInfo.def_property_readonly("renderer",
|
||||
[](const raw::MjrRendererInfo& info) {
|
||||
return info.renderer ? info.renderer
|
||||
: "";
|
||||
});
|
||||
mjrRendererInfo.def_property_readonly("backend",
|
||||
[](const raw::MjrRendererInfo& info) {
|
||||
return info.backend ? info.backend
|
||||
: "";
|
||||
});
|
||||
|
||||
using EigenUnsignedCharVectorX = Eigen::Vector<unsigned char, Eigen::Dynamic>;
|
||||
using EigenFloatVectorX = Eigen::Vector<float, Eigen::Dynamic>;
|
||||
|
||||
// Skipped: mjr_defaultContext (have MjrContext.__init__)
|
||||
Def<traits::mjr_defaultRendererInfo>(pymodule);
|
||||
Def<traits::mjr_getRendererInfo>(pymodule);
|
||||
// Skipped: mjr_makeContext (have MjrContext.__init__)
|
||||
Def<traits::mjr_changeFont>(pymodule);
|
||||
Def<traits::mjr_addAux>(pymodule);
|
||||
|
||||
@@ -28,6 +28,13 @@ import numpy as np
|
||||
)
|
||||
class MuJoCoRendererTest(parameterized.TestCase):
|
||||
|
||||
def test_renderer_info_binding(self):
|
||||
info = mujoco.MjrRendererInfo()
|
||||
mujoco.mjr_getRendererInfo(info)
|
||||
|
||||
self.assertIn(info.renderer, ('classic', 'filament', 'noop'))
|
||||
self.assertIn(info.backend, ('', 'opengl', 'vulkan', 'unknown'))
|
||||
|
||||
def test_renderer_unknown_camera_name(self):
|
||||
xml = """
|
||||
<mujoco>
|
||||
|
||||
Reference in New Issue
Block a user