to glMapBufferOES or not to glMapBufferOES

This topic contains 4 replies, has 2 voices, and was last updated by  mkandula 5 years, 10 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #30709

    mkandula
    Member

    Hi,

    In PVRTgles2Ext.cpp there is this code


    #if !defined(TARGET_OS_IPHONE)

         /* GL_EXT_multi_draw_arrays */

         if (strstr((char *)pszGLExtensions, “GL_EXT_multi_draw_arrays”))

         {

              glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTS) PVRGetProcAddress(glMultiDrawElementsEXT);

              glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYS) PVRGetProcAddress(glMultiDrawArraysEXT);

         }

         /* GL_EXT_multi_draw_arrays */

         if (strstr((char *)pszGLExtensions, “GL_OES_mapbuffer”))

         {

            glMapBufferOES = (PFNGLMAPBUFFEROES) PVRGetProcAddress(glMapBufferOES);

            glUnmapBufferOES = (PFNGLUNMAPBUFFEROES) PVRGetProcAddress(glUnmapBufferOES);

            glGetBufferPointervOES = (PFNGLGETBUFFERPOINTERVOES) PVRGetProcAddress(glGetBufferPointervOES);

         }

         /* GL_OES_vertex_array_object */

         if (strstr((char *)pszGLExtensions, “GL_OES_vertex_array_object”))

         {

            glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOES) PVRGetProcAddress(glBindVertexArrayOES);

            glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOES) PVRGetProcAddress(glDeleteVertexArraysOES);

            glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOES) PVRGetProcAddress(glGenVertexArraysOES);

              glIsVertexArrayOES = (PFNGLISVERTEXARRAYOES) PVRGetProcAddress(glIsVertexArrayOES);

         }

    #endif


    I was using this glMapBufferOES in windows emulator and while porting to xcode, I had to define “TARGET_OS_IPHONE”. This makes glMapBufferOES unusable now. Can someone please give me clarity if this mapbuffer functionality is usable or not on iPhone and iPad ???

    #35319

    Arron
    Member

    Hi.

    How exactly is the function failing? Do you get a rendering error, or is the function causing a compile failure?

    #35320

    mkandula
    Member

    glMapBufferOES basically is NULL because TARGET_OS_IPHONE is defined in xcode (unless I have to expect it to be set to a valid pointer somewhere else !)

    If I comment this line out in PVRTgles2Ext.cpp, then PVRGetProcAddress will return a valid glMapBufferOES pointer and my app functions fine in the emulator. I do not like the idea of modifying SDK code and so I ask what the correct way is. Also, I request some samples which use glMapBufferOES so that its useful to know usage of such GL EXT functions.

    mkandula2011-12-12 17:37:01

    #35321

    Arron
    Member

    Hi.

    On iOS glMapBufferOES is a core GL function so there is no need to retrieve the function pointer.

    If you call glMapBufferOES in your own code without using the extension object, then it will function just fine.

    i.e:

    Code:
    #ifdef TARGET_OS_IPHONE

       void* pData = glMapBufferOES(GL_ARRAY_BUFFER, …);

    #else

       void* pData = m_pExtFunc->glMapBufferOES(GL_ARRAY_BUFFER, …);

    #endif

    That should solve your problem. Obviously make sure you have TARGET_OS_IPHONE defined in your preprocessor section within Xcode build settings. Or you could #ifdef __APPLE__.Arron2011-12-13 11:44:48

    #35322

    mkandula
    Member

    Hi Arron,

    Thank you very much for the prompt reply. Your post really helped me save a lot of time :))

    -madan

Viewing 5 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic.