Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Create shader */
- shader :: shader(arraylist<char> *vs,arraylist<char> *fs)
- {
- char **vsc;
- char **fsc;
- int i;
- GLint res;
- /* Begin */
- valid = 0;
- /* Create the shaders */
- gl_v_index = glCreateShader(GL_VERTEX_SHADER);
- gl_f_index = glCreateShader(GL_FRAGMENT_SHADER);
- /* Load the program script text */
- vsc = new char*[vs->get_size()];
- for(i = 0;i < vs->get_size();i++)
- vsc[i] = vs->get(i);
- fsc = new char*[fs->get_size()];
- for(i = 0;i < fs->get_size();i++)
- fsc[i] = fs->get(i);
- glShaderSource(gl_v_index,vs->get_size(),(const GLchar**)vsc,0);
- glShaderSource(gl_f_index,fs->get_size(),(const GLchar**)fsc,0);
- /* Compile */
- glCompileShader(gl_v_index);
- glCompileShader(gl_f_index);
- /* Verify */
- glGetShaderiv(gl_v_index,GL_COMPILE_STATUS,&res);
- if(!res)
- {
- print_error("glsl-error.txt",gl_v_index);
- #ifdef WIN32
- MessageBoxA(0,"Could not compile vertex shader, video performance may be poor","Warning",MB_ICONWARNING);
- #endif
- return;
- }
- glGetShaderiv(gl_f_index,GL_COMPILE_STATUS,&res);
- if(!res)
- {
- print_error("glsl-error.txt",gl_f_index);
- #ifdef WIN32
- MessageBoxA(0,"Could not compile fragment shader, video performance may be poor","Warning",MB_ICONWARNING);
- #endif
- return;
- }
- /* Create the program */
- gl_p_index = glCreateProgram();
- /* Attach */
- glAttachShader(gl_p_index,gl_v_index);
- glAttachShader(gl_p_index,gl_f_index);
- /* Link */
- glLinkProgram(gl_p_index);
- /* Verify */
- glGetProgramiv(gl_p_index,GL_LINK_STATUS,&res);
- if(!res)
- {
- print_error("glsl-error.txt",gl_p_index);
- #ifdef WIN32
- MessageBoxA(0,"Could not link shader, video performance may be poor","Warning",MB_ICONWARNING);
- #endif
- return;
- }
- /* Done */
- valid = 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement