~ubuntu-branches/ubuntu/trusty/glew/trusty

« back to all changes in this revision

Viewing changes to auto/src/glew_init_gl.c

  • Committer: Bazaar Package Importer
  • Author(s): Joost Yervante Damad
  • Date: 2010-04-10 18:16:21 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20100410181621-179fn0er7sjbccku
Tags: 1.5.3-1
* New upstream release (Closes: #577183)
* reworked mx build support to reflect new version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* ------------------------------------------------------------------------- */
2
 
 
3
 
/* 
4
 
 * Search for name in the extensions string. Use of strstr()
5
 
 * is not sufficient because extension names can be prefixes of
6
 
 * other extension names. Could use strtok() but the constant
7
 
 * string returned by glGetString might be in read-only memory.
8
 
 */
9
 
GLboolean glewGetExtension (const char* name)
10
 
{    
11
 
  GLubyte* p;
12
 
  GLubyte* end;
13
 
  GLuint len = _glewStrLen((const GLubyte*)name);
14
 
  p = (GLubyte*)glGetString(GL_EXTENSIONS);
15
 
  if (0 == p) return GL_FALSE;
16
 
  end = p + _glewStrLen(p);
17
 
  while (p < end)
18
 
  {
19
 
    GLuint n = _glewStrCLen(p, ' ');
20
 
    if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
21
 
    p += n+1;
22
 
  }
23
 
  return GL_FALSE;
24
 
}
25
 
 
26
 
/* ------------------------------------------------------------------------- */
27
 
 
28
 
#ifndef GLEW_MX
29
 
static
30
 
#endif
31
 
GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
32
 
{
33
 
  const GLubyte* s;
34
 
  GLuint dot, major, minor;
35
 
  /* query opengl version */
36
 
  s = glGetString(GL_VERSION);
37
 
  dot = _glewStrCLen(s, '.');
38
 
  major = dot-1;
39
 
  minor = dot+1;
40
 
  if (dot == 0 || s[minor] == '\0')
41
 
    return GLEW_ERROR_NO_GL_VERSION;
42
 
  if (s[major] == '1' && s[minor] == '0')
43
 
  {
44
 
        return GLEW_ERROR_GL_VERSION_10_ONLY;
45
 
  }
46
 
  else
47
 
  {
48
 
    CONST_CAST(GLEW_VERSION_1_1) = GL_TRUE;
49
 
        if (s[major] >= '2')
50
 
        {
51
 
      CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE;
52
 
      CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE;
53
 
      CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE;
54
 
          CONST_CAST(GLEW_VERSION_1_5) = GL_TRUE;
55
 
          CONST_CAST(GLEW_VERSION_2_0) = GL_TRUE;
56
 
          if (s[minor] >= '1')
57
 
          {
58
 
            CONST_CAST(GLEW_VERSION_2_1) = GL_TRUE;
59
 
      }
60
 
        }
61
 
        else
62
 
        {
63
 
          if (s[minor] >= '5')
64
 
          {
65
 
                CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE;
66
 
                CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE;
67
 
                CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE;
68
 
                CONST_CAST(GLEW_VERSION_1_5) = GL_TRUE;
69
 
                CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE;
70
 
                CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE;
71
 
          }
72
 
          if (s[minor] == '4')
73
 
          {
74
 
                CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE;
75
 
                CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE;
76
 
                CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE;
77
 
                CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE;
78
 
                CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE;
79
 
                CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE;
80
 
          }
81
 
          if (s[minor] == '3')
82
 
          {
83
 
                CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE;
84
 
                CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE;
85
 
                CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE;
86
 
                CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE;
87
 
                CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE;
88
 
                CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE;
89
 
          }
90
 
          if (s[minor] == '2')
91
 
          {
92
 
                CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE;
93
 
                CONST_CAST(GLEW_VERSION_1_3) = GL_FALSE;
94
 
                CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE;
95
 
                CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE;
96
 
                CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE;
97
 
                CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE;
98
 
          }
99
 
          if (s[minor] < '2')
100
 
          {
101
 
                CONST_CAST(GLEW_VERSION_1_2) = GL_FALSE;
102
 
                CONST_CAST(GLEW_VERSION_1_3) = GL_FALSE;
103
 
                CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE;
104
 
                CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE;
105
 
                CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE;
106
 
                CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE;
107
 
          }
108
 
        }
109
 
  }
110
 
  /* initialize extensions */
 
1
/* ------------------------------------------------------------------------- */
 
2
 
 
3
/* 
 
4
 * Search for name in the extensions string. Use of strstr()
 
5
 * is not sufficient because extension names can be prefixes of
 
6
 * other extension names. Could use strtok() but the constant
 
7
 * string returned by glGetString might be in read-only memory.
 
8
 */
 
9
GLboolean glewGetExtension (const char* name)
 
10
{    
 
11
  GLubyte* p;
 
12
  GLubyte* end;
 
13
  GLuint len = _glewStrLen((const GLubyte*)name);
 
14
  p = (GLubyte*)glGetString(GL_EXTENSIONS);
 
15
  if (0 == p) return GL_FALSE;
 
16
  end = p + _glewStrLen(p);
 
17
  while (p < end)
 
18
  {
 
19
    GLuint n = _glewStrCLen(p, ' ');
 
20
    if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE;
 
21
    p += n+1;
 
22
  }
 
23
  return GL_FALSE;
 
24
}
 
25
 
 
26
/* ------------------------------------------------------------------------- */
 
27
 
 
28
#ifndef GLEW_MX
 
29
static
 
30
#endif
 
31
GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 
32
{
 
33
  const GLubyte* s;
 
34
  GLuint dot;
 
35
  GLint major, minor;
 
36
  /* query opengl version */
 
37
  s = glGetString(GL_VERSION);
 
38
  dot = _glewStrCLen(s, '.');
 
39
  if (dot == 0)
 
40
    return GLEW_ERROR_NO_GL_VERSION;
 
41
  
 
42
  major = s[dot-1]-'0';
 
43
  minor = s[dot+1]-'0';
 
44
 
 
45
  if (minor < 0 || minor > 9)
 
46
    minor = 0;
 
47
  if (major<0 || major>9)
 
48
    return GLEW_ERROR_NO_GL_VERSION;
 
49
  
 
50
 
 
51
  if (major == 1 && minor == 0)
 
52
  {
 
53
    return GLEW_ERROR_GL_VERSION_10_ONLY;
 
54
  }
 
55
  else
 
56
  {
 
57
    CONST_CAST(GLEW_VERSION_3_2) = ( major > 3 )               || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
 
58
    CONST_CAST(GLEW_VERSION_3_1) = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
 
59
    CONST_CAST(GLEW_VERSION_3_0) = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3               ) ? GL_TRUE : GL_FALSE;
 
60
    CONST_CAST(GLEW_VERSION_2_1) = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;    
 
61
    CONST_CAST(GLEW_VERSION_2_0) = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2               ) ? GL_TRUE : GL_FALSE;
 
62
    CONST_CAST(GLEW_VERSION_1_5) = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
 
63
    CONST_CAST(GLEW_VERSION_1_4) = GLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE;
 
64
    CONST_CAST(GLEW_VERSION_1_3) = GLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
 
65
    CONST_CAST(GLEW_VERSION_1_2) = GLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
 
66
    CONST_CAST(GLEW_VERSION_1_1) = GLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
 
67
  }
 
68
  /* initialize extensions */