Allow flipping textures with any number of channels and user provided pixel data.
PiperOrigin-RevId: 813256285 Change-Id: I0d49885dc483ab8f093b2566ec4bef355575505e
This commit is contained in:
committed by
Copybara-Service
parent
bdccbcc60a
commit
2dc533b63b
@@ -794,6 +794,59 @@ TEST_F(PluginTest, TextureFromBuffer) {
|
||||
mj_deleteSpec(spec);
|
||||
}
|
||||
|
||||
TEST_F(MujocoTest, TestTextureFlip) {
|
||||
mjSpec* spec = mj_makeSpec();
|
||||
EXPECT_THAT(spec, NotNull());
|
||||
|
||||
std::vector<std::byte> texture_data = {std::byte{1}, std::byte{2},
|
||||
std::byte{3}, std::byte{4}};
|
||||
mjsTexture* texture = mjs_addTexture(spec);
|
||||
mjs_setName(texture->element, "hflipped");
|
||||
texture->type = mjTEXTURE_2D;
|
||||
texture->width = 2;
|
||||
texture->height = 2;
|
||||
texture->nchannel = 1;
|
||||
texture->hflip = true;
|
||||
mjs_setBuffer(texture->data, texture_data.data(), texture_data.size());
|
||||
|
||||
texture_data = {std::byte{11}, std::byte{12}, std::byte{13}, std::byte{21},
|
||||
std::byte{22}, std::byte{23}, std::byte{31}, std::byte{32},
|
||||
std::byte{33}, std::byte{41}, std::byte{42}, std::byte{43}};
|
||||
|
||||
texture = mjs_addTexture(spec);
|
||||
mjs_setName(texture->element, "vflipped");
|
||||
texture->type = mjTEXTURE_2D;
|
||||
texture->width = 2;
|
||||
texture->height = 2;
|
||||
texture->nchannel = 3;
|
||||
texture->vflip = true;
|
||||
mjs_setBuffer(texture->data, texture_data.data(), texture_data.size());
|
||||
|
||||
mjModel* model = mj_compile(spec, 0);
|
||||
EXPECT_THAT(model, NotNull()) << mjs_getError(spec);
|
||||
|
||||
EXPECT_THAT(model->tex_data[0], 2);
|
||||
EXPECT_THAT(model->tex_data[1], 1);
|
||||
EXPECT_THAT(model->tex_data[2], 4);
|
||||
EXPECT_THAT(model->tex_data[3], 3);
|
||||
|
||||
EXPECT_THAT(model->tex_data[4], 31);
|
||||
EXPECT_THAT(model->tex_data[5], 32);
|
||||
EXPECT_THAT(model->tex_data[6], 33);
|
||||
EXPECT_THAT(model->tex_data[7], 41);
|
||||
EXPECT_THAT(model->tex_data[8], 42);
|
||||
EXPECT_THAT(model->tex_data[9], 43);
|
||||
EXPECT_THAT(model->tex_data[10], 11);
|
||||
EXPECT_THAT(model->tex_data[11], 12);
|
||||
EXPECT_THAT(model->tex_data[12], 13);
|
||||
EXPECT_THAT(model->tex_data[13], 21);
|
||||
EXPECT_THAT(model->tex_data[14], 22);
|
||||
EXPECT_THAT(model->tex_data[15], 23);
|
||||
|
||||
mj_deleteModel(model);
|
||||
mj_deleteSpec(spec);
|
||||
}
|
||||
|
||||
// -------------------------------- test attach --------------------------------
|
||||
|
||||
static constexpr char xml_child[] = R"(
|
||||
|
||||
Reference in New Issue
Block a user