<HTML
><HEAD
><TITLE
>SDL_GL_GetProcAddress</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="SDL Library Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Video"
HREF="video.html"><LINK
REL="PREVIOUS"
TITLE="SDL_GL_LoadLibrary"
HREF="sdlglloadlibrary.html"><LINK
REL="NEXT"
TITLE="SDL_GL_GetAttribute"
HREF="sdlglgetattribute.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFF8DC"
TEXT="#000000"
LINK="#0000ee"
VLINK="#551a8b"
ALINK="#ff0000"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>SDL Library Documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="sdlglloadlibrary.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="sdlglgetattribute.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SDLGLGETPROCADDRESS"
></A
>SDL_GL_GetProcAddress</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN2678"
></A
><H2
>Name</H2
>SDL_GL_GetProcAddress&nbsp;--&nbsp;Get the address of a GL function</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN2681"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN2682"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>void *<B
CLASS="FSFUNC"
>SDL_GL_GetProcAddress</B
></CODE
>(const char* proc);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2688"
></A
><H2
>Description</H2
><P
>Returns the address of the GL function <TT
CLASS="PARAMETER"
><I
>proc</I
></TT
>, or <SPAN
CLASS="RETURNVALUE"
>NULL</SPAN
> if the function is not found. If the GL library is loaded at runtime, with <A
HREF="sdlglloadlibrary.html"
><TT
CLASS="FUNCTION"
>SDL_GL_LoadLibrary</TT
></A
>, then <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>all</I
></SPAN
> GL functions must be retrieved this way. Usually this is used to retrieve function pointers to OpenGL extensions.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2696"
></A
><H2
>Example</H2
><PRE
CLASS="PROGRAMLISTING"
>typedef void (*GL_ActiveTextureARB_Func)(unsigned int);
GL_ActiveTextureARB_Func glActiveTextureARB_ptr = 0;
int has_multitexture=1;
.
.
.
/* Get function pointer */
glActiveTextureARB_ptr=(GL_ActiveTextureARB_Func) SDL_GL_GetProcAddress("glActiveTextureARB");

/* Check for a valid function ptr */
if(!glActiveTextureARB_ptr){
  fprintf(stderr, "Multitexture Extensions not present.\n");
  has_multitexture=0;
}
.
.
.
.
if(has_multitexture){
  glActiveTextureARB_ptr(GL_TEXTURE0_ARB);
  .
  .
}
else{
  .
  .
}</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN2699"
></A
><H2
>See Also</H2
><P
><A
HREF="sdlglloadlibrary.html"
><TT
CLASS="FUNCTION"
>SDL_GL_LoadLibrary</TT
></A
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="sdlglloadlibrary.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="sdlglgetattribute.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_GL_LoadLibrary</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="video.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>SDL_GL_GetAttribute</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>