mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 04:05:52 +08:00
libvgcode - replacement of glMapBuffer() call for OpenGL ES
This commit is contained in:
parent
793bc60ef4
commit
591e83b52e
@ -5,6 +5,8 @@
|
|||||||
#ifndef VGCODE_TYPES_HPP
|
#ifndef VGCODE_TYPES_HPP
|
||||||
#define VGCODE_TYPES_HPP
|
#define VGCODE_TYPES_HPP
|
||||||
|
|
||||||
|
#define VGCODE_ENABLE_OPENGL_ES 0
|
||||||
|
|
||||||
#define VGCODE_ENABLE_COG_AND_TOOL_MARKERS 0
|
#define VGCODE_ENABLE_COG_AND_TOOL_MARKERS 0
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
@ -597,7 +597,7 @@ void ViewerImpl::load(GCodeInputData&& gcode_data)
|
|||||||
// create and fill height, width and angles buffer
|
// create and fill height, width and angles buffer
|
||||||
glsafe(glGenBuffers(1, &m_heights_widths_angles_buf_id));
|
glsafe(glGenBuffers(1, &m_heights_widths_angles_buf_id));
|
||||||
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, m_heights_widths_angles_buf_id));
|
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, m_heights_widths_angles_buf_id));
|
||||||
glsafe(glBufferData(GL_TEXTURE_BUFFER, heights_widths_angles.size() * sizeof(Vec3), heights_widths_angles.data(), GL_STATIC_DRAW));
|
glsafe(glBufferData(GL_TEXTURE_BUFFER, heights_widths_angles.size() * sizeof(Vec3), heights_widths_angles.data(), GL_DYNAMIC_DRAW));
|
||||||
glsafe(glGenTextures(1, &m_heights_widths_angles_tex_id));
|
glsafe(glGenTextures(1, &m_heights_widths_angles_tex_id));
|
||||||
glsafe(glBindTexture(GL_TEXTURE_BUFFER, m_heights_widths_angles_tex_id));
|
glsafe(glBindTexture(GL_TEXTURE_BUFFER, m_heights_widths_angles_tex_id));
|
||||||
|
|
||||||
@ -1310,6 +1310,20 @@ void ViewerImpl::update_heights_widths()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, m_heights_widths_angles_buf_id));
|
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, m_heights_widths_angles_buf_id));
|
||||||
|
#if VGCODE_ENABLE_OPENGL_ES
|
||||||
|
for (size_t i = 0; i < m_vertices.size(); ++i) {
|
||||||
|
const PathVertex& v = m_vertices[i];
|
||||||
|
const size_t offset = i * sizeof(Vec3);
|
||||||
|
if (v.is_travel()) {
|
||||||
|
const std::array<float, 2> radii = { m_travels_radius, m_travels_radius };
|
||||||
|
glsafe(glBufferSubData(GL_TEXTURE_BUFFER, offset, radii.size() * sizeof(float), radii.data()));
|
||||||
|
}
|
||||||
|
else if (v.is_wipe()) {
|
||||||
|
const std::array<float, 2> radii = { m_wipes_radius, m_wipes_radius };
|
||||||
|
glsafe(glBufferSubData(GL_TEXTURE_BUFFER, offset, radii.size() * sizeof(float), radii.data()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
Vec3* buffer = static_cast<Vec3*>(glMapBuffer(GL_TEXTURE_BUFFER, GL_WRITE_ONLY));
|
Vec3* buffer = static_cast<Vec3*>(glMapBuffer(GL_TEXTURE_BUFFER, GL_WRITE_ONLY));
|
||||||
glcheck();
|
glcheck();
|
||||||
|
|
||||||
@ -1326,6 +1340,7 @@ void ViewerImpl::update_heights_widths()
|
|||||||
}
|
}
|
||||||
|
|
||||||
glsafe(glUnmapBuffer(GL_TEXTURE_BUFFER));
|
glsafe(glUnmapBuffer(GL_TEXTURE_BUFFER));
|
||||||
|
#endif // VGCODE_ENABLE_OPENGL_ES
|
||||||
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, 0));
|
glsafe(glBindBuffer(GL_TEXTURE_BUFFER, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,13 @@
|
|||||||
#include <libvgcode/include/GCodeInputData.hpp>
|
#include <libvgcode/include/GCodeInputData.hpp>
|
||||||
#include <libvgcode/include/ColorRange.hpp>
|
#include <libvgcode/include/ColorRange.hpp>
|
||||||
|
|
||||||
|
static_assert(VGCODE_ENABLE_OPENGL_ES == ENABLE_OPENGL_ES,
|
||||||
|
#if ENABLE_OPENGL_ES
|
||||||
|
"VGCODE_ENABLE_OPENGL_ES must be set to 1");
|
||||||
|
#else
|
||||||
|
"VGCODE_ENABLE_OPENGL_ES must be set to 0");
|
||||||
|
#endif // ENABLE_OPENGL_ES
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
class Print;
|
class Print;
|
||||||
} // namespace Slic3r
|
} // namespace Slic3r
|
||||||
|
Loading…
x
Reference in New Issue
Block a user