I want to use GLSL shaders.
From
http://nehe.gamedev.net/data/articles/article.asp?article=21 comes this code for using shaders:
Quote:
char * my_fragment_shader_source;
char * my_vertex_shader_source;
// Get Vertex And Fragment Shader Sources
my_fragment_shader_source = GetFragmentShaderSource();
my_vertex_shader_source = GetVertexShaderSource();
GLenum my_program;
GLenum my_vertex_shader;
GLenum my_fragment_shader;
// Create Shader And Program Objects
my_program = glCreateProgramObjectARB();
my_vertex_shader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
my_fragment_shader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
// Load Shader Sources
glShaderSourceARB(my_vertex_shader, 1, &my_vertex_shader_source, NULL);
glShaderSourceARB(my_fragment_shader, 1, &my_fragment_shader_source, NULL);
// Compile The Shaders
glCompileShaderARB(my_vertex_shader);
glCompileShaderARB(my_fragment_shader);
// Attach The Shader Objects To The Program Object
glAttachObjectARB(my_program, my_vertex_shader);
glAttachObjectARB(my_program, my_fragment_shader);
// Link The Program Object
glLinkProgramARB(my_program);
// Use The Program Object Instead Of Fixed Function OpenGL
glUseProgramObjectARB(my_program);
My issue is with the glShaderSourceARB lines.
My GLextARB module has the method:
Sub glShaderSourceARB(glA As Integer, glB As Integer, glC As String, glD As Integer)
#pragma DisableBackgroundTasks
Declare Sub CallToGL Lib kOpenGLextARBLib Alias "glShaderSourceARB" (glA As Integer,glB As Integer,glC As PString,glD As Integer)
CallToGL glA,glB,glC,glD
End Sub
I want to use this method (or make a version of it I can use). No matter what I do, it unexpectedly quits on that line. The last parameter apparently is supposed to be a null pointer. I have tried having the last parameter be a ptr and setting it to null. I have tried shader source with unix and windows line ends. I have tried CString instead of PString and I have tried adding a nil to the end. I simply can't make it work.
How do I use glShaderSourceARB?
Thanks!