00001 /* 00002 ATI fragment shader Extension program file. 00003 setup by NFZ 00004 extracted from ATI 8500 SDK 00005 00006 ** GL_ATI_fragment_shader 00007 ** 00008 ** Support: 00009 ** Rage 128 * based : Not Supported 00010 ** Radeon * based : Not Supported 00011 ** R200 * based : Supported 00012 ** R200 : 8500, 9000, 9100, 9200 00013 ** also works on R300 but pointless since ARBFP1.0 supported 00014 */ 00015 00016 #include "OgreGLATIFSInit.h" 00017 #include "OgreGLPrerequisites.h" 00018 00019 // ATI_fragment_program functions 00020 PFNGLGENFRAGMENTSHADERSATIPROC glGenFragmentShadersATI_ptr=NULL; 00021 PFNGLBINDFRAGMENTSHADERATIPROC glBindFragmentShaderATI_ptr=NULL; 00022 PFNGLDELETEFRAGMENTSHADERATIPROC glDeleteFragmentShaderATI_ptr=NULL; 00023 PFNGLBEGINFRAGMENTSHADERATIPROC glBeginFragmentShaderATI_ptr=NULL; 00024 PFNGLENDFRAGMENTSHADERATIPROC glEndFragmentShaderATI_ptr=NULL; 00025 PFNGLPASSTEXCOORDATIPROC glPassTexCoordATI_ptr=NULL; 00026 PFNGLSAMPLEMAPATIPROC glSampleMapATI_ptr=NULL; 00027 PFNGLCOLORFRAGMENTOP1ATIPROC glColorFragmentOp1ATI_ptr=NULL; 00028 PFNGLCOLORFRAGMENTOP2ATIPROC glColorFragmentOp2ATI_ptr=NULL; 00029 PFNGLCOLORFRAGMENTOP3ATIPROC glColorFragmentOp3ATI_ptr=NULL; 00030 PFNGLALPHAFRAGMENTOP1ATIPROC glAlphaFragmentOp1ATI_ptr=NULL; 00031 PFNGLALPHAFRAGMENTOP2ATIPROC glAlphaFragmentOp2ATI_ptr=NULL; 00032 PFNGLALPHAFRAGMENTOP3ATIPROC glAlphaFragmentOp3ATI_ptr=NULL; 00033 PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glSetFragmentShaderConstantATI_ptr=NULL; 00034 00035 bool InitATIFragmentShaderExtensions(Ogre::GLSupport& glSupport) 00036 { 00037 static bool init = false; 00038 //char *extList; 00039 00040 if(init) return init; 00041 00042 00043 /* confirm that the version of OpenGL supports ATI fragment shader */ 00044 /* done in GLRenderSystem 00045 extList = (char *)glGetString(GL_EXTENSIONS); 00046 00047 if (strstr(extList, "GL_ATI_fragment_shader") == NULL) { 00048 //MessageBox(NULL, "GL_ATI_fragment_shader extension not supported", "GL Extension error", MB_OK); 00049 // ** should raise exception 00050 init = false; 00051 return false; 00052 } 00053 00054 */ 00055 00056 00057 glGenFragmentShadersATI_ptr = (PFNGLGENFRAGMENTSHADERSATIPROC) glSupport.getProcAddress("glGenFragmentShadersATI"); 00058 glBindFragmentShaderATI_ptr = (PFNGLBINDFRAGMENTSHADERATIPROC) glSupport.getProcAddress("glBindFragmentShaderATI"); 00059 glDeleteFragmentShaderATI_ptr = (PFNGLDELETEFRAGMENTSHADERATIPROC) glSupport.getProcAddress("glDeleteFragmentShaderATI"); 00060 glBeginFragmentShaderATI_ptr = (PFNGLBEGINFRAGMENTSHADERATIPROC) glSupport.getProcAddress("glBeginFragmentShaderATI"); 00061 glEndFragmentShaderATI_ptr = (PFNGLENDFRAGMENTSHADERATIPROC) glSupport.getProcAddress("glEndFragmentShaderATI"); 00062 glPassTexCoordATI_ptr = (PFNGLPASSTEXCOORDATIPROC) glSupport.getProcAddress("glPassTexCoordATI"); 00063 glSampleMapATI_ptr = (PFNGLSAMPLEMAPATIPROC) glSupport.getProcAddress("glSampleMapATI"); 00064 glColorFragmentOp1ATI_ptr = (PFNGLCOLORFRAGMENTOP1ATIPROC) glSupport.getProcAddress("glColorFragmentOp1ATI"); 00065 glColorFragmentOp2ATI_ptr = (PFNGLCOLORFRAGMENTOP2ATIPROC) glSupport.getProcAddress("glColorFragmentOp2ATI"); 00066 glColorFragmentOp3ATI_ptr = (PFNGLCOLORFRAGMENTOP3ATIPROC) glSupport.getProcAddress("glColorFragmentOp3ATI"); 00067 glAlphaFragmentOp1ATI_ptr = (PFNGLALPHAFRAGMENTOP1ATIPROC) glSupport.getProcAddress("glAlphaFragmentOp1ATI"); 00068 glAlphaFragmentOp2ATI_ptr = (PFNGLALPHAFRAGMENTOP2ATIPROC) glSupport.getProcAddress("glAlphaFragmentOp2ATI"); 00069 glAlphaFragmentOp3ATI_ptr = (PFNGLALPHAFRAGMENTOP3ATIPROC) glSupport.getProcAddress("glAlphaFragmentOp3ATI"); 00070 glSetFragmentShaderConstantATI_ptr = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) glSupport.getProcAddress("glSetFragmentShaderConstantATI"); 00071 00072 if (glGenFragmentShadersATI_ptr == NULL) return false; 00073 00074 if (glBindFragmentShaderATI_ptr == NULL) return false; 00075 00076 if (glDeleteFragmentShaderATI_ptr == NULL) return false; 00077 00078 if (glBeginFragmentShaderATI_ptr == NULL) return false; 00079 00080 if (glEndFragmentShaderATI_ptr == NULL) return false; 00081 00082 if (glPassTexCoordATI_ptr == NULL) return false; 00083 00084 if (glColorFragmentOp1ATI_ptr == NULL) return false; 00085 00086 if (glColorFragmentOp2ATI_ptr == NULL) return false; 00087 00088 if (glColorFragmentOp3ATI_ptr == NULL) return false; 00089 00090 if (glAlphaFragmentOp1ATI_ptr == NULL) return false; 00091 00092 if (glAlphaFragmentOp2ATI_ptr == NULL) return false; 00093 00094 if (glAlphaFragmentOp2ATI_ptr == NULL) return false; 00095 00096 if (glAlphaFragmentOp3ATI_ptr == NULL) return false; 00097 00098 if (glSetFragmentShaderConstantATI_ptr == NULL) return false; 00099 00100 init = true; 00101 00102 return true; 00103 } 00104
Copyright © 2002-2003 by The OGRE Team
Last modified Fri May 14 23:22:10 2004