| | 80 | |
| | 81 | // GL_ARB_vertex_program |
| | 82 | void (APIENTRY * qglVertexAttribPointerARB) (GLuint index, GLint size, GLenum type, GLboolean normalized, |
| | 83 | GLsizei stride, const GLvoid * pointer); |
| | 84 | void (APIENTRY * qglEnableVertexAttribArrayARB) (GLuint index); |
| | 85 | void (APIENTRY * qglDisableVertexAttribArrayARB) (GLuint index); |
| | 86 | |
| | 87 | // GL_ARB_vertex_buffer_object |
| | 88 | void (APIENTRY * qglBindBufferARB) (GLenum target, GLuint buffer); |
| | 89 | void (APIENTRY * qglDeleteBuffersARB) (GLsizei n, const GLuint * buffers); |
| | 90 | void (APIENTRY * qglGenBuffersARB) (GLsizei n, GLuint * buffers); |
| | 91 | GLboolean(APIENTRY * qglIsBufferARB) (GLuint buffer); |
| | 92 | void (APIENTRY * qglBufferDataARB) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); |
| | 93 | void (APIENTRY * qglBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); |
| | 94 | void (APIENTRY * qglGetBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); |
| | 95 | GLvoid *(APIENTRY * qglMapBufferARB) (GLenum target, GLenum access); |
| | 96 | GLboolean(APIENTRY * qglUnmapBufferARB) (GLenum target); |
| | 97 | void (APIENTRY * qglGetBufferParameterivARB) (GLenum target, GLenum pname, GLint * params); |
| | 98 | void (APIENTRY * qglGetBufferPointervARB) (GLenum target, GLenum pname, GLvoid * *params); |
| | 99 | void ( * qglLockArraysEXT)( int, int); |
| | 100 | void ( * qglUnlockArraysEXT) ( void ); |
| | 609 | |
| | 610 | // GL_ARB_vertex_program |
| | 611 | qglVertexAttribPointerARB = NULL; |
| | 612 | qglEnableVertexAttribArrayARB = NULL; |
| | 613 | qglDisableVertexAttribArrayARB = NULL; |
| | 614 | if(Q_stristr(glConfig.extensions_string, "GL_ARB_vertex_program")) |
| | 615 | { |
| | 616 | qglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) SDL_GL_GetProcAddress("glVertexAttribPointerARB"); |
| | 617 | qglEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress("glEnableVertexAttribArrayARB"); |
| | 618 | qglDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress("glDisableVertexAttribArrayARB"); |
| | 619 | ri.Printf(PRINT_ALL, "...using GL_ARB_vertex_program\n"); |
| | 620 | } |
| | 621 | else |
| | 622 | { |
| | 623 | ri.Error(ERR_FATAL, "...GL_ARB_vertex_program not found\n"); |
| | 624 | } |
| | 625 | |
| | 626 | // GL_ARB_vertex_buffer_object |
| | 627 | qglBindBufferARB = NULL; |
| | 628 | qglDeleteBuffersARB = NULL; |
| | 629 | qglGenBuffersARB = NULL; |
| | 630 | qglIsBufferARB = NULL; |
| | 631 | qglBufferDataARB = NULL; |
| | 632 | qglBufferSubDataARB = NULL; |
| | 633 | qglGetBufferSubDataARB = NULL; |
| | 634 | qglMapBufferARB = NULL; |
| | 635 | qglUnmapBufferARB = NULL; |
| | 636 | qglGetBufferParameterivARB = NULL; |
| | 637 | qglGetBufferPointervARB = NULL; |
| | 638 | if(Q_stristr(glConfig.extensions_string, "GL_ARB_vertex_buffer_object")) |
| | 639 | { |
| | 640 | qglBindBufferARB = (PFNGLBINDBUFFERARBPROC) SDL_GL_GetProcAddress("glBindBufferARB"); |
| | 641 | qglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) SDL_GL_GetProcAddress("glDeleteBuffersARB"); |
| | 642 | qglGenBuffersARB = (PFNGLGENBUFFERSARBPROC) SDL_GL_GetProcAddress("glGenBuffersARB"); |
| | 643 | qglIsBufferARB = (PFNGLISBUFFERARBPROC) SDL_GL_GetProcAddress("glIsBufferARB"); |
| | 644 | qglBufferDataARB = (PFNGLBUFFERDATAARBPROC) SDL_GL_GetProcAddress("glBufferDataARB"); |
| | 645 | qglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC) SDL_GL_GetProcAddress("glBufferSubDataARB"); |
| | 646 | qglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC) SDL_GL_GetProcAddress("glGetBufferSubDataARB"); |
| | 647 | qglMapBufferARB = (PFNGLMAPBUFFERARBPROC) SDL_GL_GetProcAddress("glMapBufferARB"); |
| | 648 | qglUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC) SDL_GL_GetProcAddress("glUnmapBufferARB"); |
| | 649 | qglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC) SDL_GL_GetProcAddress("glGetBufferParameterivARB"); |
| | 650 | qglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC) SDL_GL_GetProcAddress("glGetBufferPointervARB"); |
| | 651 | ri.Printf(PRINT_ALL, "...using GL_ARB_vertex_buffer_object\n"); |
| | 652 | } |
| | 653 | else |
| | 654 | { |
| | 655 | ri.Error(ERR_FATAL, "...GL_ARB_vertex_buffer_object not found\n"); |
| | 656 | } |
| | 657 | |