J'ai découvert le nouveau tutoriel (http://alexandre-laurent.developpez....L/OpenGL-GLSL/) sur les shaders, et j'ai voulu le tester.
Mais, j'obtiens une violation d'accès sur glShaderSource.
En pas-à-pas, tout se passe bien jusqu'à glShaderSource. SourceVertex contient bien le source du shader.
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 var szSourceTmp: String; SourceVertex, SourceFragment, Log: PGLchar; nTailleVertex, nTailleFragment, nEtatProgramme, nTailleLog: GL.GLint; begin szSourceTmp := LectureFichierShader('VERTEX_SHADER', nTailleVertex); GetMem(SourceVertex, nTailleVertex); try StrPCopy(PChar(SourceVertex), szSourceTmp); // Création de l'ID du vertex shader. _nIDVertex := glCreateShader(GL_VERTEX_SHADER); // Test des erreurs OpenGL. if TestErreur('Initialisations OpenGL', True) then begin _bErreurInit := True; Exit; end; // Chargement des sources dans OpenGL. glShaderSource(_nIDVertex, 1, SourceVertex, @nTailleVertex); // <-- VIOLATION D'ACCES ICI ! finally FreeMem(SourceVertex); end;
Je précise que la fonction existe bien. Au début, j'avais oublié de charger les fonctions étendues, mais cette fois c'est fait :
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 glShaderSource := wglGetProcAddress('glShaderSource'); if not Assigned(glShaderSource) then Exit;
Je suis en OpenGL 2.1 : ca ne doit pas poser de problème, non ?
![]()
Partager