Ah someone is trying to create 4k's..
Something like this should work:
Code:
const
glNames: array[0..6] of pchar = ('glCreateShader', 'glCreateProgram', 'glShaderSource', 'glCompileShader', 'glAttachShader', 'glLinkProgram', 'glUseProgram');
var
glFP: array[0..6] of pointer;
type
TGLCreateShader = function(Typ: GLenum): GLUint; cdecl;
TGLCreateProgram = function: GLUint; cdecl;
TGLShaderSource = function(Shader: GLUint; Count: GLInt; PointerToPchar: Pointer; Len: GLUint): GLUint;
TGLCompileShader = function(Shader: GLUint): GLUint;
TGLAttachShader = function(Prog, Shader: GLUint): GLUint;
TGLLinkProgram = function(Prog: GLUint): GLUint;
TGLUseProgram = function(Prog: GLUint): GLUint;
procedure setShader;
var v,f,p: GLUint;
begin
for i := 0 to 6 do
glFP[i] := wglGetProcAddress(glNames[i]);
v := TGLCreateShader(glFP[0])(GL_VERTEX_SHADER);
f := TGLCreateShader(glFP[0])(GL_FRAGMENT_SHADER);
p := TGLCreateProgram(glFP[1])();
TGLShaderSource(glFP[2])(v,1,@vsh,nil);
TGLCompileShader(glFP[3])(v);
TGLShaderSource(glFP[2])(f,1,@fsh,nil);
TGLCompileShader(glFP[3])(f);
TGLAttachShader(glFP[4])(p,v);
TGLAttachShader(glFP[4])(p,f);
TGLLinkProgram(glFP[5])(p);
TGLUseProgram(glFP[6])(p);
end;
Bookmarks