15#ifdef GPUCA_DISPLAY_GL3W
20#if __has_include(<GL/glu.h>)
23#define gluErrorString(err) ""
26#include <fmt/printf.h>
38#define GPUCA_BUILD_EVENT_DISPLAY_OPENGL
39#if !defined(GL_VERSION_4_5) || GL_VERSION_4_5 != 1
40#ifdef GPUCA_STANDALONE
42#elif defined(GPUCA_O2_LIB)
43#pragma message "Unsupported OpenGL version < 4.5, disabling standalone event display"
45#warning Unsupported OpenGL version < 4.5, disabling standalone event display
47#undef GPUCA_BUILD_EVENT_DISPLAY_OPENGL
50#ifdef GPUCA_BUILD_EVENT_DISPLAY_OPENGL
55 GLenum err = glGetError(); \
56 while (err != GL_NO_ERROR) { \
57 GPUError("OpenGL Error %d: %s (%s: %d)", (int32_t)err, (const char*)gluErrorString(err), __FILE__, __LINE__); \
58 throw std::runtime_error("OpenGL Failure"); \
111 const auto ATTRIB_ZERO = 0;
112 const auto BUFFER_IDX = 0;
141 throw std::runtime_error(
"Magnetic field needs fmt");
165 const std::array<float, 4> drawColor = {1.f, 0.f, 0.f, 1.f};
uint32_t mShaderProgramField
uint32_t drawField() override
uint32_t mSolenoidParameterizationBuffer
static int32_t checkProgramStatus(uint32_t program)
static int32_t checkShaderStatus(uint32_t shader)
void ExitMagFieldVisualization()
uint32_t mDipoleSegmentsBuffer
uint32_t mVertexShaderPassthrough
int32_t InitMagFieldVisualization()
uint32_t mDipoleParameterizationBuffer
uint32_t mFieldModelViewBuffer
uint32_t mFieldModelConstantsBuffer
uint32_t mSolenoidSegmentsBuffer
std::unique_ptr< GPUDisplayMagneticField > mMagneticFieldVisualization
static constexpr std::size_t MAX_SOLENOID_R_SEGMENTS
static constexpr std::size_t MAX_DIPOLE_ROWS
static constexpr std::size_t MAX_CHEBYSHEV_ORDER
static constexpr std::size_t MAX_SOLENOID_COEFFICIENTS
static constexpr std::size_t MAX_DIPOLE_Y_SEGMENTS
static constexpr std::size_t MAX_DIPOLE_PARAMETERIZATIONS
static constexpr std::size_t MAX_DIPOLE_X_SEGMENTS
static constexpr std::size_t DIMENSIONS
static constexpr std::size_t MAX_DIPOLE_Z_SEGMENTS
static constexpr std::size_t MAX_DIPOLE_COLUMNS
static constexpr std::size_t MAX_SOLENOID_COLUMNS
static constexpr std::size_t MAX_SOLENOID_P_SEGMENTS
static constexpr std::size_t MAX_SOLENOID_Z_SEGMENTS
static constexpr std::size_t MAX_SOLENOID_PARAMETERIZATIONS
static constexpr std::size_t MAX_DIPOLE_COEFFICIENTS
static constexpr std::size_t MAX_SOLENOID_ROWS
const GPUSettingsDisplayLight & cfgL() const
#define glVertexArrayAttribBinding
#define glNamedBufferData
#define glGetUniformLocation
#define glDeleteVertexArrays
#define glBindVertexArray
#define glCreateVertexArrays
#define glNamedBufferSubData
#define glVertexArrayVertexBuffer
#define glVertexArrayAttribFormat
#define glEnableVertexArrayAttrib
#define GL_UNIFORM_BUFFER
#define GL_GEOMETRY_SHADER
#define GL_SHADER_STORAGE_BUFFER
static constexpr const char * vertexShaderPassthrough
static constexpr const char * geometryShaderP2
static constexpr const char * fieldModelShaderConstants
static constexpr const char * geometryShaderP1
static constexpr const char * fieldModelShaderCode