I’m new to OpenGL and I’m currently having a problem that I just cannot figure out:
In MacOS I can create a EAGLView like this:
EAGLView *glView = [EAGLView viewWithFrame:[window bounds]
pixelFormat:kEAGLColorFormatRGBA8
depthFormat:0];
kEAGLColorFormatRGBA8
Specifies a 32-bit RGBA format that corresponds to the OpenGL ES GL_RGBA8888 format.
And in windows, I the code is like this:
static CCEGL * create(CCEGLView * pWindow)
{
CCEGL * pEGL = new CCEGL;
BOOL bSuccess = FALSE;
do
{
CC_BREAK_IF(! pEGL);
pEGL->m_eglNativeWindow = pWindow->getHWnd();
pEGL->m_eglNativeDisplay = GetDC(pEGL->m_eglNativeWindow);
EGLDisplay eglDisplay;
CC_BREAK_IF(EGL_NO_DISPLAY == (eglDisplay = eglGetDisplay(pEGL->m_eglNativeDisplay)));
EGLint nMajor, nMinor;
CC_BREAK_IF(EGL_FALSE == eglInitialize(eglDisplay, &nMajor, &nMinor) || 1 != nMajor);
[b]const EGLint aConfigAttribs[] =
{
EGL_LEVEL, 0,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_NATIVE_RENDERABLE, EGL_FALSE,
EGL_DEPTH_SIZE, 0,
EGL_NONE,
};[/b]
EGLint iConfigs;
EGLConfig eglConfig;
CC_BREAK_IF(EGL_FALSE == eglChooseConfig(eglDisplay, aConfigAttribs, &eglConfig, 1, &iConfigs)
|| (iConfigs != 1));
EGLContext eglContext;
eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, NULL);
CC_BREAK_IF(EGL_NO_CONTEXT == eglContext);
EGLSurface eglSurface;
eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, pEGL->m_eglNativeWindow, NULL);
CC_BREAK_IF(EGL_NO_SURFACE == eglSurface);
CC_BREAK_IF(EGL_FALSE == eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext));
pEGL->m_eglDisplay = eglDisplay;
pEGL->m_eglConfig = eglConfig;
pEGL->m_eglContext = eglContext;
pEGL->m_eglSurface = eglSurface;
bSuccess = TRUE;
} while (0);
if (! bSuccess)
{
CC_SAFE_DELETE(pEGL);
}
return pEGL;
}
I tired to find the “pixelFormat” method but it seems like there’s no such functions out there.
So I would like to know how to set the pixelformat to GL_RGBA8888 in windows os?
Any replay will be appreciated, thanks in advance