move shaders to cpp file

This commit is contained in:
Konstantin Käfer
2014-01-20 11:30:06 +01:00
parent 29c10b7835
commit 5aa22b9c32
7 changed files with 27 additions and 32 deletions

View File

@@ -39,39 +39,36 @@ module.exports = function() {
header += '#ifndef LLMR_SHADER_SHADERS\n'; header += '#ifndef LLMR_SHADER_SHADERS\n';
header += '#define LLMR_SHADER_SHADERS\n'; header += '#define LLMR_SHADER_SHADERS\n';
header += '\n'; header += '\n';
header += '#ifdef __cplusplus\n'; header += 'namespace llmr {\n';
header += 'extern "C" {\n';
header += '#endif\n';
header += '\n'; header += '\n';
header += 'struct llmr_shader {\n'; header += 'struct shader_source {\n';
header += ' const char *vertex;\n'; header += ' const char *vertex;\n';
header += ' const char *fragment;\n'; header += ' const char *fragment;\n';
header += '};\n'; header += '};\n';
header += 'typedef struct llmr_shader llmr_shader_t;\n'
header += '\n'; header += '\n';
header += 'enum {\n'; header += 'enum {\n';
consts.push('SHADER_COUNT'); consts.push('SHADER_COUNT');
header += ' ' + consts.join(',\n ') + '\n'; header += ' ' + consts.join(',\n ') + '\n';
header += '};\n'; header += '};\n';
header += '\n'; header += '\n';
header += 'extern const llmr_shader_t llmr_shaders[SHADER_COUNT];\n'; header += 'const shader_source shaders[SHADER_COUNT];\n';
header += '\n'; header += '\n';
header += '#ifdef __cplusplus\n';
header += '}\n'; header += '}\n';
header += '#endif\n';
header += '\n'; header += '\n';
header += '#endif\n'; header += '#endif\n';
fs.writeFileSync('include/llmr/shader/shaders.h', header); fs.writeFileSync('include/llmr/shader/shaders.hpp', header);
var code = '// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.\n'; var code = '// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.\n';
code += '#include <llmr/shader/shaders.h>\n'; code += '#include <llmr/shader/shaders.hpp>\n';
code += '\n'; code += '\n';
code += 'const llmr_shader_t llmr_shaders[SHADER_COUNT] = {\n'; code += 'using namespace llmr;\n';
code += '\n';
code += 'const shader_source shaders[SHADER_COUNT] = {\n';
code += lines.join(',\n'); code += lines.join(',\n');
code += '\n};\n'; code += '\n};\n';
fs.writeFileSync('src/shader/shaders.c', code); fs.writeFileSync('src/shader/shaders.cpp', code);
}; };
module.exports(); module.exports();

View File

@@ -3,15 +3,12 @@
#ifndef LLMR_SHADER_SHADERS #ifndef LLMR_SHADER_SHADERS
#define LLMR_SHADER_SHADERS #define LLMR_SHADER_SHADERS
#ifdef __cplusplus namespace llmr {
extern "C" {
#endif
struct llmr_shader { struct shader_source {
const char *vertex; const char *vertex;
const char *fragment; const char *fragment;
}; };
typedef struct llmr_shader llmr_shader_t;
enum { enum {
FILL_SHADER, FILL_SHADER,
@@ -20,10 +17,8 @@ enum {
SHADER_COUNT SHADER_COUNT
}; };
extern const llmr_shader_t llmr_shaders[SHADER_COUNT]; extern const shader_source shaders[SHADER_COUNT];
#ifdef __cplusplus
} }
#endif
#endif #endif

View File

@@ -9,7 +9,7 @@ SET(llmr_SOURCES
renderer/shader-line.cpp renderer/shader-line.cpp
renderer/shader-outline.cpp renderer/shader-outline.cpp
renderer/shader.cpp renderer/shader.cpp
shader/shaders.c shader/shaders.cpp
util/animation.cpp util/animation.cpp
util/mat4.c util/mat4.c
) )
@@ -28,6 +28,7 @@ SET(llmr_HEADERS
../include/llmr/renderer/shader-line.hpp ../include/llmr/renderer/shader-line.hpp
../include/llmr/renderer/shader-outline.hpp ../include/llmr/renderer/shader-outline.hpp
../include/llmr/renderer/shader.hpp ../include/llmr/renderer/shader.hpp
../include/llmr/shader/shaders.hpp
../include/llmr/util/animation.hpp ../include/llmr/util/animation.hpp
../include/llmr/util/math.hpp ../include/llmr/util/math.hpp
../include/llmr/util/vec2.hpp ../include/llmr/util/vec2.hpp

View File

@@ -1,13 +1,13 @@
#include <llmr/renderer/shader-fill.hpp> #include <llmr/renderer/shader-fill.hpp>
#include <llmr/shader/shaders.h> #include <llmr/shader/shaders.hpp>
#include <llmr/platform/gl.hpp> #include <llmr/platform/gl.hpp>
using namespace llmr; using namespace llmr;
FillShader::FillShader() FillShader::FillShader()
: Shader( : Shader(
llmr_shaders[FILL_SHADER].vertex, shaders[FILL_SHADER].vertex,
llmr_shaders[FILL_SHADER].fragment shaders[FILL_SHADER].fragment
) { ) {
if (!valid) { if (!valid) {
fprintf(stderr, "invalid fill shader\n"); fprintf(stderr, "invalid fill shader\n");

View File

@@ -1,13 +1,13 @@
#include <llmr/renderer/shader-line.hpp> #include <llmr/renderer/shader-line.hpp>
#include <llmr/shader/shaders.h> #include <llmr/shader/shaders.hpp>
#include <llmr/platform/gl.hpp> #include <llmr/platform/gl.hpp>
using namespace llmr; using namespace llmr;
LineShader::LineShader() LineShader::LineShader()
: Shader( : Shader(
llmr_shaders[LINE_SHADER].vertex, shaders[LINE_SHADER].vertex,
llmr_shaders[LINE_SHADER].fragment shaders[LINE_SHADER].fragment
) { ) {
if (!valid) { if (!valid) {
fprintf(stderr, "invalid line shader\n"); fprintf(stderr, "invalid line shader\n");

View File

@@ -1,13 +1,13 @@
#include <llmr/renderer/shader-outline.hpp> #include <llmr/renderer/shader-outline.hpp>
#include <llmr/shader/shaders.h> #include <llmr/shader/shaders.hpp>
#include <llmr/platform/gl.hpp> #include <llmr/platform/gl.hpp>
using namespace llmr; using namespace llmr;
OutlineShader::OutlineShader() OutlineShader::OutlineShader()
: Shader( : Shader(
llmr_shaders[OUTLINE_SHADER].vertex, shaders[OUTLINE_SHADER].vertex,
llmr_shaders[OUTLINE_SHADER].fragment shaders[OUTLINE_SHADER].fragment
) { ) {
if (!valid) { if (!valid) {
fprintf(stderr, "invalid outline shader\n"); fprintf(stderr, "invalid outline shader\n");

View File

@@ -1,7 +1,9 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED. // NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
#include <llmr/shader/shaders.h> #include <llmr/shader/shaders.hpp>
const llmr_shader_t llmr_shaders[SHADER_COUNT] = { using namespace llmr;
const shader_source llmr::shaders[SHADER_COUNT] = {
[FILL_SHADER] = { [FILL_SHADER] = {
.vertex = "attribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n", .vertex = "attribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n",
.fragment = "uniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n", .fragment = "uniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n",