Extract OpenGL shader uniform catalog
This commit is contained in:
@@ -201,6 +201,52 @@ void rejects_invalid_shader_attribute_binding_catalogs(pp::tests::Harness& h)
|
||||
PP_EXPECT(h, pp::renderer::gl::validate_shader_attribute_bindings(duplicate_location).ok());
|
||||
}
|
||||
|
||||
void exposes_shader_uniform_catalog(pp::tests::Harness& h)
|
||||
{
|
||||
const auto uniforms = pp::renderer::gl::panopainter_shader_uniform_names();
|
||||
|
||||
PP_EXPECT(h, uniforms.size() == 43U);
|
||||
PP_EXPECT(h, pp::renderer::gl::validate_shader_uniform_names(uniforms).ok());
|
||||
PP_EXPECT(h, std::strcmp(uniforms[0].name, "mvp") == 0);
|
||||
PP_EXPECT(h, uniforms[0].id == pp::renderer::gl::shader_uniform_id("mvp"));
|
||||
PP_EXPECT(h, uniforms[0].id == 40696U);
|
||||
PP_EXPECT(h, std::strcmp(uniforms[1].name, "tex") == 0);
|
||||
PP_EXPECT(h, uniforms[1].id == pp::renderer::gl::shader_uniform_id("tex"));
|
||||
PP_EXPECT(h, uniforms[1].id == 48854U);
|
||||
PP_EXPECT(h, pp::renderer::gl::shader_uniform_id("pattern_contr") == 54920U);
|
||||
PP_EXPECT(h, pp::renderer::gl::shader_uniform_id("draw_outline") == 36178U);
|
||||
}
|
||||
|
||||
void rejects_invalid_shader_uniform_catalogs(pp::tests::Harness& h)
|
||||
{
|
||||
const std::array<pp::renderer::gl::OpenGlUniformName, 0> empty {};
|
||||
const std::array unnamed {
|
||||
pp::renderer::gl::OpenGlUniformName { .name = "", .id = 0 },
|
||||
};
|
||||
const std::array null_named {
|
||||
pp::renderer::gl::OpenGlUniformName { .name = nullptr, .id = 0 },
|
||||
};
|
||||
const std::array mismatched_hash {
|
||||
pp::renderer::gl::OpenGlUniformName { .name = "mvp", .id = 1 },
|
||||
};
|
||||
const std::array duplicate_name {
|
||||
pp::renderer::gl::OpenGlUniformName {
|
||||
.name = "mvp",
|
||||
.id = pp::renderer::gl::shader_uniform_id("mvp"),
|
||||
},
|
||||
pp::renderer::gl::OpenGlUniformName {
|
||||
.name = "mvp",
|
||||
.id = pp::renderer::gl::shader_uniform_id("mvp"),
|
||||
},
|
||||
};
|
||||
|
||||
PP_EXPECT(h, !pp::renderer::gl::validate_shader_uniform_names(empty).ok());
|
||||
PP_EXPECT(h, !pp::renderer::gl::validate_shader_uniform_names(unnamed).ok());
|
||||
PP_EXPECT(h, !pp::renderer::gl::validate_shader_uniform_names(null_named).ok());
|
||||
PP_EXPECT(h, !pp::renderer::gl::validate_shader_uniform_names(mismatched_hash).ok());
|
||||
PP_EXPECT(h, !pp::renderer::gl::validate_shader_uniform_names(duplicate_name).ok());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -216,5 +262,7 @@ int main()
|
||||
harness.run("maps_shape_index_and_primitive_modes", maps_shape_index_and_primitive_modes);
|
||||
harness.run("exposes_shader_attribute_binding_catalog", exposes_shader_attribute_binding_catalog);
|
||||
harness.run("rejects_invalid_shader_attribute_binding_catalogs", rejects_invalid_shader_attribute_binding_catalogs);
|
||||
harness.run("exposes_shader_uniform_catalog", exposes_shader_uniform_catalog);
|
||||
harness.run("rejects_invalid_shader_uniform_catalogs", rejects_invalid_shader_uniform_catalogs);
|
||||
return harness.finish();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user