C++程序  |  80行  |  2.6 KB

#include "gles2context.h"

static char const * const gVendorString     = "Android";
static char const * const gRendererString   = "Android PixelFlinger2 0.0";
static char const * const gVersionString    = "OpenGL ES 2.0";
static char const * const gExtensionsString =
//   "GL_OES_byte_coordinates "              // OK
//   "GL_OES_fixed_point "                   // OK
//   "GL_OES_single_precision "              // OK
//   "GL_OES_read_format "                   // OK
//   "GL_OES_compressed_paletted_texture "   // OK
//   "GL_OES_draw_texture "                  // OK
//   "GL_OES_matrix_get "                    // OK
//   "GL_OES_query_matrix "                  // OK
//   //        "GL_OES_point_size_array "              // TODO
//   //        "GL_OES_point_sprite "                  // TODO
//   "GL_OES_EGL_image "                     // OK
//#ifdef GL_OES_compressed_ETC1_RGB8_texture
//   "GL_OES_compressed_ETC1_RGB8_texture "  // OK
//#endif
//   "GL_ARB_texture_compression "           // OK
//   "GL_ARB_texture_non_power_of_two "      // OK
//   "GL_ANDROID_user_clip_plane "           // OK
//   "GL_ANDROID_vertex_buffer_object "      // OK
//   "GL_ANDROID_generate_mipmap "           // OK
   ""
   ;

void glGetIntegerv(GLenum pname, GLint* params)
{
   switch (pname) {
   case GL_MAX_TEXTURE_SIZE :
      *params = 4096; // limit is in precision of texcoord calculation, which uses 16.16
      break;
   case GL_MAX_VERTEX_ATTRIBS:
      *params = GGL_MAXVERTEXATTRIBS;
      break;
   case GL_MAX_VERTEX_UNIFORM_VECTORS:
      *params = GGL_MAXVERTEXUNIFORMVECTORS;
      break;
   case GL_MAX_VARYING_VECTORS:
      *params = GGL_MAXVARYINGVECTORS;
      break;
   case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
      *params = GGL_MAXCOMBINEDTEXTUREIMAGEUNITS;
      break;
   case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
      *params = GGL_MAXVERTEXTEXTUREIMAGEUNITS;
      break;
   case GL_MAX_TEXTURE_IMAGE_UNITS:
      *params = GGL_MAXTEXTUREIMAGEUNITS;
      break;
   case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
      *params = GGL_MAXFRAGMENTUNIFORMVECTORS;
      break;
   case GL_ALIASED_LINE_WIDTH_RANGE:
      *params = 1; // TODO: not implemented
      break;
   default:
      LOGD("agl2: glGetIntegerv 0x%.4X", pname);
      assert(0);
   }
}

const GLubyte* glGetString(GLenum name)
{
   switch (name) {
   case GL_VENDOR:
      return (const GLubyte*)gVendorString;
   case GL_RENDERER:
      return (const GLubyte*)gRendererString;
   case GL_VERSION:
      return (const GLubyte*)gVersionString;
   case GL_EXTENSIONS:
      return (const GLubyte*)gExtensionsString;
   }
   assert(0); //(c, GL_INVALID_ENUM);
   return 0;
}