~yuningdodo/nux/xim-preedit

« back to all changes in this revision

Viewing changes to NuxGraphics/GpuDevice.cpp

* Fixed detection of OpenGL major and minor version numbers.. Fixes: . Approved by Didier Roche.

Show diffs side-by-side

added added

removed removed

Lines of Context:
327
327
#endif
328
328
 
329
329
#ifndef NUX_OPENGLES_20
330
 
    CHECKGL(glGetIntegerv(GL_MAJOR_VERSION, &_opengl_major));
331
 
    CHECKGL(glGetIntegerv(GL_MINOR_VERSION, &_opengl_minor));
 
330
    _glsl_version_string = ANSI_TO_TCHAR(NUX_REINTERPRET_CAST(const char *, glGetString(GL_VERSION)));
 
331
    CHECKGL_MSG(glGetString(GL_VERSION));
 
332
 
 
333
    NString opengl_major;
 
334
    NString opengl_minor;
 
335
    char split = '.';
 
336
    _glsl_version_string.SplitAtFirstOccurenceOf(split, opengl_major, opengl_minor);
 
337
 
 
338
    _opengl_major = (char)opengl_major.GetTCharPtr()[0] - '0';
 
339
    _opengl_minor = (char)opengl_minor.GetTCharPtr()[0] - '0';
 
340
 
 
341
    if (_opengl_major >= 3)
 
342
    {
 
343
      CHECKGL(glGetIntegerv(GL_MAJOR_VERSION, &_opengl_major));
 
344
      CHECKGL(glGetIntegerv(GL_MINOR_VERSION, &_opengl_minor));
 
345
    }
332
346
#else
333
347
    _opengl_major = 2;
334
348
    _opengl_minor = 0;
512
526
    CHECKGL_MSG(glGetString(GL_RENDERER));
513
527
    _openGL_version_string = ANSI_TO_TCHAR(NUX_REINTERPRET_CAST(const char *, glGetString(GL_VERSION)));
514
528
    CHECKGL_MSG(glGetString(GL_VERSION));
515
 
#ifndef NUX_OPENGLES_20
516
 
    if (GLEW_VERSION_2_0)
517
 
#else
518
 
    if (1)
519
 
#endif
520
 
    {
521
 
      _glsl_version_string = ANSI_TO_TCHAR(NUX_REINTERPRET_CAST(const char *, glGetString(GL_SHADING_LANGUAGE_VERSION)));
522
 
      CHECKGL_MSG(glGetString(GL_SHADING_LANGUAGE_VERSION));
523
 
 
524
 
      NString glsl_major;
525
 
      NString glsl_minor;
526
 
      char split = '.';
527
 
      _glsl_version_string.SplitAtFirstOccurenceOf(split, glsl_major, glsl_minor);
528
 
 
529
 
    }
530
529
 
531
530
    nuxDebugMsg("Gpu Vendor: %s", _board_vendor_string.GetTCharPtr());
532
531
    nuxDebugMsg("Gpu Renderer: %s", _board_renderer_string.GetTCharPtr());
533
532
    nuxDebugMsg("Gpu OpenGL Version: %s", _openGL_version_string.GetTCharPtr());
 
533
    nuxDebugMsg("Gpu OpenGL Major Version: %d", _opengl_major);
 
534
    nuxDebugMsg("Gpu OpenGL Minor Version: %d", _opengl_minor);
534
535
    nuxDebugMsg("Gpu GLSL Version: %s", _glsl_version_string.GetTCharPtr());
535
536
 
536
 
#ifndef NUX_OPENGLES_20
537
 
    // Get the version supported by the context that was set.
538
 
    int new_opengl_major;
539
 
    int new_opengl_minor;
540
 
    CHECKGL(glGetIntegerv(GL_MAJOR_VERSION, &new_opengl_major));
541
 
    CHECKGL(glGetIntegerv(GL_MINOR_VERSION, &new_opengl_minor));
542
 
 
543
 
    if ((new_opengl_major != _opengl_major) || (new_opengl_minor != _opengl_minor))
544
 
    {
545
 
      nuxDebugMsg("The Gpu supports OpenGL %d.%d but version %d.%d has been requested.", _opengl_major, _opengl_minor, new_opengl_major, new_opengl_minor);
546
 
    }
547
 
#endif
548
 
 
549
537
    NString TempStr = (const char *) TCharToUpperCase(_board_vendor_string.GetTCharPtr());
550
538
 
551
539
    if (TempStr.FindFirstOccurence("NVIDIA") != tstring::npos)