Hi people !
I try to add Cubism 4 R4 to my C++/OpenGL project.
I already use Glad, so I would like to use Cubism Core and Cubism Framework with Glad instead of Glew.
Must I rewrite Framework with Glad or is there another way to switch the lib to Glad ?
Is Core compatible with Glad or is that an obligation to use Glew ?
Thank you for reading me ~
0 ·
Comments
Here what I do to switch the OpenGL Demo sample from Glew to Glad :
1) Delete glew folder and add glad one in the project include directory.
2) Replace each
#include <GL/glew.h>by#include <glad/glad.h>in Framework andDemo project.
3) Write
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FEin CubismRenderer_OpenGLES2.cpp. ( Normally this should be defined in glad.h but I don't know which extension to check in https://glad.dav1d.de to add it to the loader)4) In CubismRenderer_OpenGLES2.cpp I remove a part of the GL functions in
InitializeGLFunction()Because some macros that begins with PFNGL wasn't found. Here below all the lines I deleted :glGenFramebuffers = (PFNGLGENFRAMEBUFFERSEXTPROC)WinGlGetProcAddress("glGenFramebuffers"); glGenRenderbuffers = (PFNGLGENRENDERBUFFERSEXTPROC)WinGlGetProcAddress("glGenRenderbuffers"); glBindFramebuffer = (PFNGLBINDFRAMEBUFFEREXTPROC)WinGlGetProcAddress("glBindFramebuffer"); glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)WinGlGetProcAddress("glFramebufferTexture2D"); glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSEXTPROC)WinGlGetProcAddress("glDeleteFramebuffers"); glBindRenderbuffer = (PFNGLBINDRENDERBUFFEREXTPROC)WinGlGetProcAddress("glBindRenderbuffer"); glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSEXTPROC)WinGlGetProcAddress("glDeleteRenderbuffers"); glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEEXTPROC)WinGlGetProcAddress("glRenderbufferStorage"); glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)WinGlGetProcAddress("glFramebufferRenderbuffer"); glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)WinGlGetProcAddress("glCheckFramebufferStatus");My questions and worries :
A ) Why the function
InitializeGlFunctions()is needed ? Isn't that the job of Glew or Glad to load and initialize the OpenGL function ?B ) Are
PFNGLCHECKFRAMEBUFFERSTATUSEXTPROCand other macros I deleted define by Glew, by Windows or by the GPU driver ? What happend if I don't intialize them withWinGlGetProcAddress("gl_function_name")?C ) What are the extension I need to add to glad on the loader website to get
GL_TEXTURE_MAX_ANISOTROPY_EXT? Is That the another name forARB_texture_filter_anisotropic?Thank you for reading me !
Thank you for your continued use of our product.
Since we do not know the specifications of GLAD, please contact GLAD officials or developers for more information.
A ) Why the function InitializeGlFunctions() is needed ? Isn't that the job of Glew or Glad to load and initialize the OpenGL function ?
This is necessary because it specifies the setting values during initialization.
B ) Are PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC and other macros I deleted define by Glew, by Windows or by the GPU driver ? What happend if I don't intialize them with WinGlGetProcAddress("gl_function_name") ?
In GLEW, macros such as PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC are defined in glew.h.
If not initialized with WinGlGetProcAddress, the rendering process may fail.
https://docs.microsoft.com/ja-jp/windows/win32/api/wingdi/nf-wingdi-wglgetprocaddress
GLAD requires that you prepare the appropriate loader yourself.
C ) What are the extension I need to add to glad on the loader website to get GL_TEXTURE_MAX_ANISOTROPY_EXT ? Is That the another name for ARB_texture_filter_anisotropic ?
I think it is possible to use it by adding ARB_texture_filter_anisotropic, but please check the glad.c generated by you for details.
hope that helps!
Live2D Cubism Support