| 567 | } |
| 568 | |
| 569 | static ShaderProgram * GetShaderForConfig(const ShaderConfiguration & config) |
| 570 | { |
| 571 | DAEDALUS_ASSERT( gN64FramentLibrary != NULL, "Haven't initialised the n64 fragment library" ); |
| 572 | |
| 573 | for (u32 i = 0; i < gShaders.size(); ++i) |
| 574 | { |
| 575 | ShaderProgram * program = gShaders[i]; |
| 576 | if (program->config == config) |
| 577 | return program; |
| 578 | } |
| 579 | |
| 580 | char frag_shader[2048]; |
| 581 | SprintShader(frag_shader, config); |
| 582 | |
| 583 | const char * vertex_lines[] = { default_vertex_shader }; |
| 584 | const char * fragment_lines[] = { gN64FramentLibrary, frag_shader }; |
| 585 | |
| 586 | GLuint shader_program = make_shader_program( |
| 587 | vertex_lines, ARRAYSIZE(vertex_lines), |
| 588 | fragment_lines, ARRAYSIZE(fragment_lines)); |
| 589 | if (shader_program == 0) |
| 590 | { |
| 591 | fprintf(stderr, "ERROR: during creation of the shader program\n"); |
| 592 | return NULL; |
| 593 | } |
| 594 | |
| 595 | ShaderProgram * program = new ShaderProgram; |
| 596 | InitShaderProgram(program, config, shader_program); |
| 597 | gShaders.push_back(program); |
| 598 | |
| 599 | return program; |
| 600 | } |
| 601 | |
| 602 | void RendererGL::RestoreRenderStates() |
| 603 | { |
no test coverage detected