/*
 * $RCSfile$
 *
 * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
 *
 * Use is subject to license terms.
 *
 * $Revision$
 * $Date$
 * $State$
 */

#ifndef _Java3D_GLSLInfo_h_
#define _Java3D_GLSLInfo_h_

#include "gldefs.h"

/* Structure used to hold GLSL context information; stored in ctxInfo */
struct GLSLCtxInfoRec {
    int vertexAttrOffset;

    PFNGLATTACHOBJECTARBPROC pfnglAttachObjectARB;
    PFNGLCOMPILESHADERARBPROC pfnglCompileShaderARB;
    PFNGLCREATEPROGRAMOBJECTARBPROC pfnglCreateProgramObjectARB;
    PFNGLCREATESHADEROBJECTARBPROC pfnglCreateShaderObjectARB;
    PFNGLDELETEOBJECTARBPROC pfnglglDeleteObjectARB;
    PFNGLGETINFOLOGARBPROC pfnglGetInfoLogARB;
    PFNGLGETOBJECTPARAMETERIVARBPROC pfnglGetObjectParameterivARB;
    PFNGLLINKPROGRAMARBPROC pfnglLinkProgramARB;
    PFNGLSHADERSOURCEARBPROC pfnglShaderSourceARB;
    PFNGLUSEPROGRAMOBJECTARBPROC pfnglUseProgramObjectARB;
    PFNGLGETUNIFORMLOCATIONARBPROC pfnglGetUniformLocationARB;
    PFNGLGETATTRIBLOCATIONARBPROC pfnglGetAttribLocationARB;
    PFNGLBINDATTRIBLOCATIONARBPROC pfnglBindAttribLocationARB;
    PFNGLVERTEXATTRIB1FVARBPROC pfnglVertexAttrib1fvARB;
    PFNGLVERTEXATTRIB2FVARBPROC pfnglVertexAttrib2fvARB;
    PFNGLVERTEXATTRIB3FVARBPROC pfnglVertexAttrib3fvARB;
    PFNGLVERTEXATTRIB4FVARBPROC pfnglVertexAttrib4fvARB;
    PFNGLVERTEXATTRIBPOINTERARBPROC pfnglVertexAttribPointerARB;
    PFNGLENABLEVERTEXATTRIBARRAYARBPROC pfnglEnableVertexAttribArrayARB;
    PFNGLDISABLEVERTEXATTRIBARRAYARBPROC pfnglDisableVertexAttribArrayARB;
    PFNGLGETACTIVEUNIFORMARBPROC pfnglGetActiveUniformARB;
    PFNGLUNIFORM1IARBPROC pfnglUniform1iARB;
    PFNGLUNIFORM1FARBPROC pfnglUniform1fARB;
    PFNGLUNIFORM2IARBPROC pfnglUniform2iARB;
    PFNGLUNIFORM2FARBPROC pfnglUniform2fARB;
    PFNGLUNIFORM3IARBPROC pfnglUniform3iARB;
    PFNGLUNIFORM3FARBPROC pfnglUniform3fARB;
    PFNGLUNIFORM4IARBPROC pfnglUniform4iARB;
    PFNGLUNIFORM4FARBPROC pfnglUniform4fARB;
    PFNGLUNIFORM1IVARBPROC pfnglUniform1ivARB;
    PFNGLUNIFORM1FVARBPROC pfnglUniform1fvARB;
    PFNGLUNIFORM2IVARBPROC pfnglUniform2ivARB;
    PFNGLUNIFORM2FVARBPROC pfnglUniform2fvARB;
    PFNGLUNIFORM3IVARBPROC pfnglUniform3ivARB;
    PFNGLUNIFORM3FVARBPROC pfnglUniform3fvARB;
    PFNGLUNIFORM4IVARBPROC pfnglUniform4ivARB;
    PFNGLUNIFORM4FVARBPROC pfnglUniform4fvARB;
    PFNGLUNIFORMMATRIX3FVARBPROC pfnglUniformMatrix3fvARB;
    PFNGLUNIFORMMATRIX4FVARBPROC pfnglUniformMatrix4fvARB;
};

#endif /* _Java3D_GLSLInfo_h_ */