int centerj=imageInUseSize[1]/2;
int centeri=(rowBounds[centerj*2]+rowBounds[centerj*2+1])/2;
int length=imageInUseSize[1]*4+2;
float *VertexArray=new float[length];
*VertexArray=centeri;
*(VertexArray+1)=centerj;
for ( j = 0; j < imageInUseSize[1]; j++ )
{
VertexArray[2+2*j] = static_cast<float>(rowBounds[j*2]);
VertexArray[2+2*j+1]=static_cast<float>(j);
}
k=2+2*j;
i=0;
j--;
for(;j>=0;j--)
{
VertexArray[k+2*i]=static_cast<float>(rowBounds[j*2+1]);
VertexArray[k+2*i+1]=static_cast<float>(j);
i++;
}
glewInit();
glGenBuffers = (PFNGLGENBUFFERSARBPROC) wglGetProcAddress("glGenBuffers");
glBindBuffer = (PFNGLBINDBUFFERARBPROC) wglGetProcAddress("glBindBuffer");
glBufferData = (PFNGLBUFFERDATAARBPROC) wglGetProcAddress("glBufferData");
glDeleteBuffers = (PFNGLDELETEBUFFERSARBPROC) wglGetProcAddress("glDeleteBuffers");
glDisable( GL_LIGHTING );
initShader();
//load shader
GLuint v=0,f=0,p=0;
char *vs = NULL,*fs = NULL;
glCreateProgram_ptr glCreateProgram;
if(0 == (glCreateProgram = reinterpret_cast<glCreateProgram_ptr>(wglGetProcAddress("glCreateProgram"))))
exit(0);
v = glCreateShader(GL_VERTEX_SHADER);
f = glCreateShader(GL_FRAGMENT_SHADER);
vs = textFileRead("F:\\&#31243;&#24207;\\vtkbin\\raycaster.vert");
fs = textFileRead("F:\\&#31243;&#24207;\\vtkbin\\raycaster.frag");
const char * vv = vs;
const char * ff = fs;
glShaderSource(v, 1, &vv,NULL);
glShaderSource(f, 1, &ff,NULL);
glCompileShader(v);
glCompileShader(f);
printShaderInfoLog(v);
printShaderInfoLog(f);
p = glCreateProgram();
glAttachShader(p,v);
glAttachShader(p,f);
glLinkProgram(p);
printProgramInfoLog(p);
glUseProgram(p);
glEnableClientState(GL_VERTEX_ARRAY);
GLuint iVertexBuffer = 0;
glGenBuffers(1, &iVertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer);
length=length*sizeof(float);
glBufferData(GL_ARRAY_BUFFER, length,VertexArray, GL_STATIC_DRAW);
delete [] VertexArray;
glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer);
glVertexPointer( 2, GL_FLOAT, 0, (char *) NULL );
length=imageInUseSize[1]*2+1;
glDrawArrays(GL_TRIANGLE_FAN,0,length);
glUseProgram(0);
GLint loc1,loc2,loc3,loc4,loc5,loc6,loc7,loc8,loc9,loc10,loc11,loc12,loc13,loc14,loc15;
loc1 = glGetUniformLocation(p,"centerscale");
glUniform1f(loc1,centerScale);
loc2=glGetUniformLocation(p,"offset");
glUniform2f(loc2,offsetX,offsetY);
loc3=glGetUniformLocation(p,"imageViewportSize");
glUniform2f(loc3,static_cast<float>(imageViewportSize[0]),
static_cast<float>(imageViewportSize[1]));