mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Move shader program creation into separate function.
This commit is contained in:
parent
59869483fc
commit
883d6847a5
|
@ -5,7 +5,6 @@
|
|||
#include "N64.h"
|
||||
#include "OpenGL.h"
|
||||
#include "Config.h"
|
||||
#include "Combiner.h"
|
||||
#include "GLSLCombiner.h"
|
||||
#include "Shaders.h"
|
||||
#include "Noise_shader.h"
|
||||
|
@ -108,6 +107,29 @@ void DestroyZlutTexture()
|
|||
}
|
||||
}
|
||||
|
||||
GLuint createShaderProgram(const char * _strVertex, const char * _strFragment)
|
||||
{
|
||||
GLuint vertex_shader_object = glCreateShader(GL_VERTEX_SHADER);
|
||||
glShaderSource(vertex_shader_object, 1, &_strVertex, NULL);
|
||||
glCompileShader(vertex_shader_object);
|
||||
assert(check_shader_compile_status(vertex_shader_object));
|
||||
|
||||
GLuint fragment_shader_object = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
glShaderSource(fragment_shader_object, 1, &_strFragment, NULL);
|
||||
glCompileShader(fragment_shader_object);
|
||||
assert(check_shader_compile_status(fragment_shader_object));
|
||||
|
||||
GLuint program = glCreateProgram();
|
||||
glBindAttribLocation(program, SC_POSITION, "aPosition");
|
||||
glAttachShader(program, vertex_shader_object);
|
||||
glAttachShader(program, fragment_shader_object);
|
||||
glLinkProgram(program);
|
||||
glDeleteShader(vertex_shader_object);
|
||||
glDeleteShader(fragment_shader_object);
|
||||
assert(check_program_link_status(program));
|
||||
return program;
|
||||
}
|
||||
|
||||
static
|
||||
void InitShadowMapShader()
|
||||
{
|
||||
|
@ -122,24 +144,7 @@ void InitShadowMapShader()
|
|||
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexImage1D(GL_TEXTURE_1D, 0, GL_R16, 256, 0, GL_RED, GL_UNSIGNED_SHORT, NULL);
|
||||
|
||||
GLuint shadow_map_vertex_shader_object = glCreateShader(GL_VERTEX_SHADER);
|
||||
glShaderSource(shadow_map_vertex_shader_object, 1, &shadow_map_vertex_shader, NULL);
|
||||
glCompileShader(shadow_map_vertex_shader_object);
|
||||
assert(check_shader_compile_status(shadow_map_vertex_shader_object));
|
||||
|
||||
GLuint shadow_map_fragment_shader_object = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
glShaderSource(shadow_map_fragment_shader_object, 1, &shadow_map_fragment_shader_float, NULL);
|
||||
glCompileShader(shadow_map_fragment_shader_object);
|
||||
assert(check_shader_compile_status(shadow_map_fragment_shader_object));
|
||||
|
||||
g_draw_shadow_map_program = glCreateProgram();
|
||||
glBindAttribLocation(g_draw_shadow_map_program, SC_POSITION, "aPosition");
|
||||
glAttachShader(g_draw_shadow_map_program, shadow_map_vertex_shader_object);
|
||||
glAttachShader(g_draw_shadow_map_program, shadow_map_fragment_shader_object);
|
||||
glLinkProgram(g_draw_shadow_map_program);
|
||||
glDeleteShader(shadow_map_vertex_shader_object);
|
||||
glDeleteShader(shadow_map_fragment_shader_object);
|
||||
assert(check_program_link_status(g_draw_shadow_map_program));
|
||||
g_draw_shadow_map_program = createShaderProgram(shadow_map_vertex_shader, shadow_map_fragment_shader_float);
|
||||
}
|
||||
|
||||
static
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define GLSL_COMBINER_H
|
||||
|
||||
#include "gDP.h"
|
||||
#include "Combiner.h"
|
||||
|
||||
class ShaderCombiner {
|
||||
public:
|
||||
|
@ -116,6 +117,8 @@ void InitShaderCombiner();
|
|||
void DestroyShaderCombiner();
|
||||
void SetShadowMapCombiner();
|
||||
|
||||
GLuint createShaderProgram(const char * _strVertex, const char * _strFragment);
|
||||
|
||||
//#define USE_TOONIFY
|
||||
|
||||
#endif //GLSL_COMBINER_H
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include "TextDrawer.h"
|
||||
#include "Config.h"
|
||||
#include "GLSLCombiner.h"
|
||||
|
||||
struct point {
|
||||
GLfloat x;
|
||||
|
@ -219,30 +220,7 @@ void TextDrawer::init()
|
|||
return;
|
||||
}
|
||||
|
||||
GLint status;
|
||||
|
||||
GLuint draw_text_vertex_shader_object = glCreateShader(GL_VERTEX_SHADER);
|
||||
glShaderSource(draw_text_vertex_shader_object, 1, &strDrawTextVertexShader, NULL);
|
||||
glCompileShader(draw_text_vertex_shader_object);
|
||||
glGetShaderiv(draw_text_vertex_shader_object, GL_COMPILE_STATUS, &status);
|
||||
assert(status == GL_TRUE);
|
||||
|
||||
GLuint draw_text_fragment_shader_object = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
glShaderSource(draw_text_fragment_shader_object, 1, &strDrawTextFragmentShader, NULL);
|
||||
glCompileShader(draw_text_fragment_shader_object);
|
||||
glGetShaderiv(draw_text_fragment_shader_object, GL_COMPILE_STATUS, &status);
|
||||
assert(status == GL_TRUE);
|
||||
|
||||
m_program = glCreateProgram();
|
||||
glBindAttribLocation(m_program, SC_POSITION, "aPosition");
|
||||
glAttachShader(m_program, draw_text_vertex_shader_object);
|
||||
glAttachShader(m_program, draw_text_fragment_shader_object);
|
||||
glLinkProgram(m_program);
|
||||
glDeleteShader(draw_text_vertex_shader_object);
|
||||
glDeleteShader(draw_text_fragment_shader_object);
|
||||
glGetProgramiv(m_program, GL_LINK_STATUS, &status);
|
||||
assert(status == GL_TRUE);
|
||||
|
||||
m_program = createShaderProgram(strDrawTextVertexShader, strDrawTextFragmentShader);
|
||||
if(m_program == 0)
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user