在桌面上没有egl的Opengl es 2.0(windows)

时间:2012-07-02 08:24:43

标签: c visual-studio-2008 opengl-es opengl-es-2.0

我使用visual studio 2008在Windows上有一个简单的程序。

在我的代码中我使用了gl函数,即#include GLES2 / gl2.h以及#include EGL / egl.h

在代码中我使用EGL初始化上下文。如下所示。

它创建一个窗口和CreateEGLContext。

我没有在屏幕上显示我的结果。但是存储在内存中,所以我不会交换显示和表面缓冲区。

我想问你从这段代码中删除egl.h的问题怎么可能。

任何人都可以给我任何想法。提前谢谢

GLboolean  CreateWindow1 ( ESContext *esContext, const char* title, GLint width, GLint height,      GLuint flags )
{
   GLuint attribList[] =
         {
      EGL_RED_SIZE,       5,
     EGL_GREEN_SIZE,     6,
   EGL_BLUE_SIZE,      5,
   EGL_ALPHA_SIZE,     (flags & ES_WINDOW_ALPHA) ? 8 : EGL_DONT_CARE,
   EGL_DEPTH_SIZE,     (flags & ES_WINDOW_DEPTH) ? 8 : EGL_DONT_CARE,
   EGL_STENCIL_SIZE,   (flags & ES_WINDOW_STENCIL) ? 8 : EGL_DONT_CARE,
   EGL_SAMPLE_BUFFERS, (flags & ES_WINDOW_MULTISAMPLE) ? 1 : 0,
   EGL_NONE
  };

   if ( esContext == NULL )
  {
     return GL_FALSE;
  }

  esContext->width = width;
  esContext->height = height;

  if ( !WinCreate ( esContext, title) )
    {
    return GL_FALSE;
    }


     if ( !CreateEGLContext ( esContext->hWnd,  &esContext->eglDisplay,  &esContext->eglContext,    &esContext->eglSurface,
                    attribList) )
  {
  return GL_FALSE;
  }


  return GL_TRUE;
 }

我的回答是我假设的解决方案。或者,如果我们想要或使用任何其他框架,我们可以建立自己的框架:)

@Nicol Bolas:非常感谢你的编辑。我将OpenGL添加到我的问题中,因为有人在做OpenGL时将OpenGL ES理解为OpenGL的子APL。我建议你做更好的编辑,这会有所帮助。在您的多次修改之前,我无法发布问题

1 个答案:

答案 0 :(得分:1)

EGL在OpenGL ES 2.0(和其他Khronos图形)之间提供了一个“粘合”层 API)和计算机上运行的本机窗口系统,如 X Window系统在GNU / Linux系统,Microsoft Windows或Windows上很常见 Mac OS X的Quartz。在EGL可以确定哪种类型的绘图表面之前, 或者它需要的基础系统的任何其他特征 用窗口系统打开通信通道。 因为每个窗口系统都有不同的语义,所以EGL提供了一个 基本的opaque类型 - EGLDisplay - 封装了所有系统 与本机窗口系统连接的依赖关系。首先 任何使用EGL的应用程序需要做的操作是创建和初始化 与本地EGL显示器的连接。