Route font mesh operations through renderer GL
This commit is contained in:
@@ -1232,8 +1232,11 @@ pp::foundation::Result<OpenGlMeshObjects> create_opengl_mesh_objects(
|
||||
|
||||
if (upload.vertex_byte_count < 0
|
||||
|| (upload.vertex_byte_count > 0 && upload.vertex_data == nullptr)
|
||||
|| (upload.indexed && (upload.index_byte_count <= 0 || upload.index_data == nullptr))
|
||||
|| upload.index_byte_count < 0
|
||||
|| (upload.index_byte_count > 0 && upload.index_data == nullptr)
|
||||
|| (!upload.indexed && upload.index_byte_count != 0)
|
||||
|| upload.vertex_array_count == 0U
|
||||
|| upload.vertex_array_count > 2U
|
||||
|| upload.attributes.empty()) {
|
||||
return pp::foundation::Result<OpenGlMeshObjects>::failure(
|
||||
pp::foundation::Status::invalid_argument("OpenGL mesh upload parameters are invalid"));
|
||||
@@ -1254,7 +1257,7 @@ pp::foundation::Result<OpenGlMeshObjects> create_opengl_mesh_objects(
|
||||
pp::foundation::Status::out_of_range("OpenGL mesh buffer allocation returned id 0"));
|
||||
}
|
||||
|
||||
if (upload.indexed) {
|
||||
if (upload.indexed && upload.index_byte_count > 0) {
|
||||
dispatch.bind_buffer(element_array_buffer_target(), buffers[1]);
|
||||
dispatch.buffer_data(element_array_buffer_target(), upload.index_byte_count, upload.index_data, static_draw_buffer_usage());
|
||||
}
|
||||
@@ -1266,13 +1269,14 @@ pp::foundation::Result<OpenGlMeshObjects> create_opengl_mesh_objects(
|
||||
dispatch.bind_buffer(array_buffer_target(), 0U);
|
||||
|
||||
std::array<std::uint32_t, 2> vertex_arrays {};
|
||||
dispatch.gen_vertex_arrays(static_cast<std::uint32_t>(vertex_arrays.size()), vertex_arrays.data());
|
||||
if (vertex_arrays[0] == 0U || vertex_arrays[1] == 0U) {
|
||||
dispatch.gen_vertex_arrays(upload.vertex_array_count, vertex_arrays.data());
|
||||
if (vertex_arrays[0] == 0U || (upload.vertex_array_count > 1U && vertex_arrays[1] == 0U)) {
|
||||
return pp::foundation::Result<OpenGlMeshObjects>::failure(
|
||||
pp::foundation::Status::out_of_range("OpenGL mesh vertex array allocation returned id 0"));
|
||||
}
|
||||
|
||||
for (const auto vertex_array : vertex_arrays) {
|
||||
for (std::uint32_t vertex_array_index = 0U; vertex_array_index < upload.vertex_array_count; ++vertex_array_index) {
|
||||
const auto vertex_array = vertex_arrays[vertex_array_index];
|
||||
dispatch.bind_vertex_array(vertex_array);
|
||||
for (const auto& attribute : upload.attributes) {
|
||||
dispatch.enable_vertex_attrib_array(attribute.index);
|
||||
|
||||
Reference in New Issue
Block a user