Esempio n. 1
0
int
glw_opengl_init_context(glw_root_t *gr)
{
    GLint tu = 0;

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_CULL_FACE);

    glPixelStorei(GL_UNPACK_ALIGNMENT, PIXMAP_ROW_ALIGN);
    glPixelStorei(GL_PACK_ALIGNMENT, PIXMAP_ROW_ALIGN);

    glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &tu);
    if(tu < 6) {
        TRACE(TRACE_ERROR, "GLW",
              "Insufficient number of texture image units %d < 6 "
              "for GLW video rendering widget.",
              tu);
        return -1;
    }
    TRACE(TRACE_DEBUG, "GLW", "%d texture image units available", tu);

    const char *vendor   = (const char *)glGetString(GL_VENDOR);
    const char *renderer = (const char *)glGetString(GL_RENDERER);
    TRACE(TRACE_INFO, "GLW", "OpenGL Renderer: '%s' by '%s'", renderer, vendor);

    gr->gr_br_read_pixels = opengl_read_pixels;

    return glw_opengl_shaders_init(gr);
}
Esempio n. 2
0
int
glw_opengl_init_context(glw_root_t *gr)
{
  GLint tu = 0;
  glw_backend_root_t *gbr = &gr->gr_be;
  const	GLubyte	*s;
  /* Check OpenGL extensions we would like to have */

  s = glGetString(GL_EXTENSIONS);

  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glEnable(GL_CULL_FACE);

  gbr->gbr_frontface = GLW_CCW;

  glPixelStorei(GL_UNPACK_ALIGNMENT, PIXMAP_ROW_ALIGN);

  if(check_gl_ext(s, "GL_ARB_texture_non_power_of_two")) {
    gbr->gbr_texmode = GLW_OPENGL_TEXTURE_NPOT;
    gbr->gbr_primary_texture_mode = GL_TEXTURE_2D;
    gr->gr_normalized_texture_coords = 1;

#ifdef GL_TEXTURE_RECTANGLE_ARB
  } else if(check_gl_ext(s, "GL_ARB_texture_rectangle")) {
    gbr->gbr_texmode = GLW_OPENGL_TEXTURE_RECTANGLE;
    gbr->gbr_primary_texture_mode = GL_TEXTURE_RECTANGLE_ARB;
#endif

  } else {
    gbr->gbr_texmode = GLW_OPENGL_TEXTURE_SIMPLE;
    gbr->gbr_primary_texture_mode = GL_TEXTURE_2D;
    gr->gr_normalized_texture_coords = 1;
    
  }

  glEnable(gbr->gbr_primary_texture_mode);

  glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &tu);
  if(tu < 6) {
    TRACE(TRACE_ERROR, "GLW", 
	  "Insufficient number of texture image units %d < 6 "
	  "for GLW video rendering widget.",
	  tu);
    return -1;
  }
  TRACE(TRACE_DEBUG, "GLW", "%d texture image units available", tu);

  const char *vendor   = (const char *)glGetString(GL_VENDOR);
  const char *renderer = (const char *)glGetString(GL_RENDERER);
  TRACE(TRACE_INFO, "GLW", "OpenGL Renderer: '%s' by '%s'", renderer, vendor);

  int use_shaders = 1;

  if(use_shaders) {
    return glw_opengl_shaders_init(gr, 0);
  } else {
    return glw_opengl_ff_init(gr);
  }
}
Esempio n. 3
0
int
glw_opengl_init_context(glw_root_t *gr)
{
  glw_backend_root_t *gbr = &gr->gr_be;

  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glEnable(GL_CULL_FACE);
  gbr->gbr_frontface = GLW_CCW;

  glPixelStorei(GL_UNPACK_ALIGNMENT, PIXMAP_ROW_ALIGN);

  gbr->gbr_texmode = GLW_OPENGL_TEXTURE_NPOT;
  gbr->gbr_primary_texture_mode = GL_TEXTURE_2D;
  gr->gr_normalized_texture_coords = 1;

  glEnable(gbr->gbr_primary_texture_mode);

  const char *vendor   = (const char *)glGetString(GL_VENDOR);
  const char *renderer = (const char *)glGetString(GL_RENDERER);
  TRACE(TRACE_INFO, "GLW", "OpenGL Renderer: '%s' by '%s'", renderer, vendor);

  return glw_opengl_shaders_init(gr, 1);
}