Bonjour à tous,

Je ne vois pas pourquoi mon code ne fonctionne pas, alors je me suis dis que de l'extérieur vous pourriez mieux voir, je vous soumets donc ma petite structure:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
struct LDEshader
{
    LDEuint fragment_shader,
            vertex_shader,
            program;
    LDEint  compiled,
            linked;
 
    string  line,
            page;
    istringstream iss;
 
    char shader_link_error[4096];
 
    void init()
    {
        program = glCreateProgram();
    }
 
    void fragment(string name)
    {
        // read file
        ifstream file( LDEstc(name) );
        if ( file.is_open() )
        {
            while ( getline(file,line) ) page += line;
            file.close();
            line.erase();
 
            // create stuff
            fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
 
            const GLchar *page_char = LDEstc(page); page.erase();
 
            glShaderSource( fragment_shader,1,&page_char,NULL );
 
            glCompileShader(fragment_shader);
 
            glGetShaderiv(fragment_shader,GL_COMPILE_STATUS,&compiled);
            if( !compiled )
            {
                cout<<"Couldn't compile "<<name<<"\n{\n";
                glGetInfoLogARB( fragment_shader, sizeof(shader_link_error), NULL, shader_link_error );
                cout<<shader_link_error<<"}\n";
            }
 
            glAttachShader(program,fragment_shader);
        }
    }
 
    void vertex(string name)
    {
        // read file
        ifstream file( LDEstc(name) );
        if ( file.is_open() )
        {
            while ( getline(file,line) ) page += line;
            file.close();
            line.erase();
 
            // create stuff
            vertex_shader = glCreateShader(GL_VERTEX_SHADER);
 
            const GLchar *page_char = LDEstc(page); page.erase();
 
            glShaderSource( vertex_shader,1,&page_char,NULL );
 
            glCompileShader(vertex_shader);
 
            glGetShaderiv(vertex_shader,GL_COMPILE_STATUS,&compiled);
            if ( !compiled )
            {
                cout<<"Couldn't compile "<<name<<"\n{\n";
                glGetInfoLogARB( vertex_shader, sizeof(shader_link_error), NULL, shader_link_error );
                cout<<shader_link_error<<"}\n";
            }
 
            glAttachShader(program,vertex_shader);
        }
    }
 
    void link()
    {
        glLinkProgram(program);
        glGetObjectParameterivARB( program, GL_OBJECT_LINK_STATUS_ARB, &linked );
    }
 
    void use()
    {
        glUseProgram(program);
    }
};
Je fais l'utilisation ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
// ...
 
main() // ...
{
    //...
    LDEshader shader;
    shader.init();
    shader.vertex("vertex_shader.vert");
    shader.fragment("fragment_shader.frag");
    shader.link();
 
    // ...
    loop() //...
    {
	//...
            shader.use();
 
  	// some opengl stuff ...
    }
}
Lors de l'exécution du programme, j'obtiens ceci de GLSL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Couldn't compile vertex_shader.vert
 
{
 
(0) : error C0000: syntax error, unexpected $end at token "<null atom>"
 
(0) : error C0501: type name expected at token "<null atom>"
 
}
 
Couldn't compile fragment_shader.frag
 
{
 
(0) : error C0000: syntax error, unexpected $end at token "<null atom>"
 
(0) : error C0501: type name expected at token "<null atom>"
 
}
Voyez vous l'erreur?
Merci d'avance

edit: Mes petits Vertex/Fragment Shader sont les suivants:
http://gdorin.hopto.org/divers/LDE/vertex_shader.vert
http://gdorin.hopto.org/divers/LDE/fragment_shader.frag