mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
gl_engine: replace std::string with C-style strings for portability
- C-style strings provide consistent binary interface for FFI - Reduces potential issues where standard library is limited (e.g., WebAssembly, embedded systems)
This commit is contained in:
parent
7d4a5215dd
commit
7bcee79077
3 changed files with 41 additions and 28 deletions
|
@ -98,9 +98,36 @@ void GlRenderer::initShaders()
|
|||
{
|
||||
mPrograms.reserve((int)RT_None);
|
||||
|
||||
#define COMMON_TOTAL_LENGTH strlen(STR_GRADIENT_FRAG_COMMON_VARIABLES) + \
|
||||
strlen(STR_GRADIENT_FRAG_COMMON_FUNCTIONS)
|
||||
|
||||
#define LINEAR_TOTAL_LENGTH strlen(STR_LINEAR_GRADIENT_VARIABLES) + \
|
||||
strlen(STR_LINEAR_GRADIENT_MAIN) + \
|
||||
COMMON_TOTAL_LENGTH + 1
|
||||
|
||||
#define RADIAL_TOTAL_LENGTH strlen(STR_RADIAL_GRADIENT_VARIABLES) + \
|
||||
strlen(STR_RADIAL_GRADIENT_MAIN) + \
|
||||
COMMON_TOTAL_LENGTH + 1
|
||||
|
||||
char linearGradientFragShader[LINEAR_TOTAL_LENGTH];
|
||||
snprintf(linearGradientFragShader, LINEAR_TOTAL_LENGTH, "%s%s%s%s",
|
||||
STR_GRADIENT_FRAG_COMMON_VARIABLES,
|
||||
STR_LINEAR_GRADIENT_VARIABLES,
|
||||
STR_GRADIENT_FRAG_COMMON_FUNCTIONS,
|
||||
STR_LINEAR_GRADIENT_MAIN
|
||||
);
|
||||
|
||||
char radialGradientFragShader[RADIAL_TOTAL_LENGTH];
|
||||
snprintf(radialGradientFragShader, RADIAL_TOTAL_LENGTH, "%s%s%s%s",
|
||||
STR_GRADIENT_FRAG_COMMON_VARIABLES,
|
||||
STR_RADIAL_GRADIENT_VARIABLES,
|
||||
STR_GRADIENT_FRAG_COMMON_FUNCTIONS,
|
||||
STR_RADIAL_GRADIENT_MAIN
|
||||
);
|
||||
|
||||
mPrograms.push(new GlProgram(COLOR_VERT_SHADER, COLOR_FRAG_SHADER));
|
||||
mPrograms.push(new GlProgram(GRADIENT_VERT_SHADER, LINEAR_GRADIENT_FRAG_SHADER));
|
||||
mPrograms.push(new GlProgram(GRADIENT_VERT_SHADER, RADIAL_GRADIENT_FRAG_SHADER));
|
||||
mPrograms.push(new GlProgram(GRADIENT_VERT_SHADER, linearGradientFragShader));
|
||||
mPrograms.push(new GlProgram(GRADIENT_VERT_SHADER, radialGradientFragShader));
|
||||
mPrograms.push(new GlProgram(IMAGE_VERT_SHADER, IMAGE_FRAG_SHADER));
|
||||
|
||||
// compose Renderer
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include "tvgGlShaderSrc.h"
|
||||
|
||||
#define TVG_COMPOSE_SHADER(shader) #shader
|
||||
|
@ -75,12 +74,12 @@ const char* GRADIENT_VERT_SHADER = TVG_COMPOSE_SHADER(
|
|||
);
|
||||
|
||||
|
||||
std::string STR_GRADIENT_FRAG_COMMON_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
const char* STR_GRADIENT_FRAG_COMMON_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
const int MAX_STOP_COUNT = 16; \n
|
||||
in vec2 vPos; \n
|
||||
);
|
||||
|
||||
std::string STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER(
|
||||
const char* STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER(
|
||||
float gradientStep(float edge0, float edge1, float x) \n
|
||||
{ \n
|
||||
// linear \n
|
||||
|
@ -170,7 +169,7 @@ std::string STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER(
|
|||
} \n
|
||||
);
|
||||
|
||||
std::string STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
const char* STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
layout(std140) uniform GradientInfo { \n
|
||||
vec4 nStops; \n
|
||||
vec2 gradStartPos; \n
|
||||
|
@ -180,7 +179,7 @@ std::string STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
|||
} uGradientInfo; \n
|
||||
);
|
||||
|
||||
std::string STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
||||
const char* STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
||||
out vec4 FragColor; \n
|
||||
void main() \n
|
||||
{ \n
|
||||
|
@ -195,7 +194,7 @@ std::string STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
|||
} \n
|
||||
);
|
||||
|
||||
std::string STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
const char* STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
||||
layout(std140) uniform GradientInfo { \n
|
||||
vec4 nStops; \n
|
||||
vec4 centerPos; \n
|
||||
|
@ -205,7 +204,7 @@ std::string STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER(
|
|||
} uGradientInfo ; \n
|
||||
);
|
||||
|
||||
std::string STR_RADIAL_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
||||
const char* STR_RADIAL_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
||||
out vec4 FragColor; \n
|
||||
\n
|
||||
mat3 radial_matrix(vec2 p0, vec2 p1) \n
|
||||
|
@ -314,23 +313,6 @@ std::string STR_RADIAL_GRADIENT_MAIN = TVG_COMPOSE_SHADER(
|
|||
}
|
||||
);
|
||||
|
||||
std::string STR_LINEAR_GRADIENT_FRAG_SHADER =
|
||||
STR_GRADIENT_FRAG_COMMON_VARIABLES +
|
||||
STR_LINEAR_GRADIENT_VARIABLES +
|
||||
STR_GRADIENT_FRAG_COMMON_FUNCTIONS +
|
||||
STR_LINEAR_GRADIENT_MAIN;
|
||||
|
||||
const char* LINEAR_GRADIENT_FRAG_SHADER = STR_LINEAR_GRADIENT_FRAG_SHADER.c_str();
|
||||
|
||||
std::string STR_RADIAL_GRADIENT_FRAG_SHADER =
|
||||
STR_GRADIENT_FRAG_COMMON_VARIABLES +
|
||||
STR_RADIAL_GRADIENT_VARIABLES +
|
||||
STR_GRADIENT_FRAG_COMMON_FUNCTIONS +
|
||||
STR_RADIAL_GRADIENT_MAIN;
|
||||
|
||||
const char* RADIAL_GRADIENT_FRAG_SHADER = STR_RADIAL_GRADIENT_FRAG_SHADER.c_str();
|
||||
|
||||
|
||||
const char* IMAGE_VERT_SHADER = TVG_COMPOSE_SHADER(
|
||||
uniform float uDepth; \n
|
||||
layout (location = 0) in vec2 aLocation; \n
|
||||
|
|
|
@ -26,8 +26,12 @@
|
|||
extern const char* COLOR_VERT_SHADER;
|
||||
extern const char* COLOR_FRAG_SHADER;
|
||||
extern const char* GRADIENT_VERT_SHADER;
|
||||
extern const char* LINEAR_GRADIENT_FRAG_SHADER;
|
||||
extern const char* RADIAL_GRADIENT_FRAG_SHADER;
|
||||
extern const char* STR_GRADIENT_FRAG_COMMON_VARIABLES;
|
||||
extern const char* STR_GRADIENT_FRAG_COMMON_FUNCTIONS;
|
||||
extern const char* STR_LINEAR_GRADIENT_VARIABLES;
|
||||
extern const char* STR_LINEAR_GRADIENT_MAIN;
|
||||
extern const char* STR_RADIAL_GRADIENT_VARIABLES;
|
||||
extern const char* STR_RADIAL_GRADIENT_MAIN;
|
||||
extern const char* IMAGE_VERT_SHADER;
|
||||
extern const char* IMAGE_FRAG_SHADER;
|
||||
extern const char* MASK_VERT_SHADER;
|
||||
|
|
Loading…
Add table
Reference in a new issue