gl: remove the use of glu

This commit is contained in:
Matthew Waters 2014-11-27 16:17:50 +11:00
parent f2af65ee2d
commit 6bd1150ca8
19 changed files with 20 additions and 335 deletions

View file

@ -656,7 +656,6 @@ save_LIBS="$LIBS"
HAVE_GL=no HAVE_GL=no
HAVE_GLES2=no HAVE_GLES2=no
HAVE_GLU=no
HAVE_WAYLAND_EGL=no HAVE_WAYLAND_EGL=no
HAVE_EGL_RPI=no HAVE_EGL_RPI=no
@ -665,18 +664,15 @@ case $host in
*-mingw32* ) *-mingw32* )
LIBS="$LIBS -lgdi32" LIBS="$LIBS -lgdi32"
AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h) AG_GST_CHECK_LIBHEADER(GL, opengl32, glTexImage2D,, GL/gl.h)
AG_GST_CHECK_LIBHEADER(GLU, glu32, gluSphere,, GL/glu.h)
AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>]) AC_CHECK_HEADER(GL/wglext.h, HAVE_WGLEXT="yes", HAVE_WGLEXT="no", [#include <GL/gl.h>])
if test "x$HAVE_WGLEXT" = "xyes"; then if test "x$HAVE_WGLEXT" = "xyes"; then
HAVE_WGL=yes HAVE_WGL=yes
HAVE_GL=yes HAVE_GL=yes
HAVE_GLU=yes
fi fi
;; ;;
*) *)
if test "x$NEED_GL" != "xno"; then if test "x$NEED_GL" != "xno"; then
AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h) AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h)
AG_GST_CHECK_LIBHEADER(GLU, GLU, gluSphere,, GL/glu.h)
fi fi
if test "x$NEED_GLES2" != "xno"; then if test "x$NEED_GLES2" != "xno"; then
AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h) AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
@ -801,24 +797,16 @@ else
AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported]) AC_MSG_ERROR([Building the GLX backend without the OpenGL backend is unsupported])
fi fi
else dnl HAVE_GL=yes else dnl HAVE_GL=yes
if test "x$HAVE_GLU" = "xno"; then USE_OPENGL=yes
if test "x$NEED_GL" = "xyes"; then if test "x$NEED_GLX" != "xno"; then
AC_MSG_ERROR([GLU is required with OpenGL support]) USE_GLX=yes
else
AC_MSG_WARN([GLU is required with OpenGL support])
fi
else dnl HAVE_GLU=yes
USE_OPENGL=yes
if test "x$NEED_GLX" != "xno"; then
USE_GLX=yes
fi
fi fi
fi fi
fi fi
fi fi
dnl check if we can include both GL and GLES2 at the same time dnl check if we can include both GL and GLES2 at the same time
if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLU" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
GL_INCLUDES=" GL_INCLUDES="
#ifndef GL_GLEXT_PROTOTYPES #ifndef GL_GLEXT_PROTOTYPES
#define GL_GLEXT_PROTOTYPES 1 #define GL_GLEXT_PROTOTYPES 1
@ -837,10 +825,8 @@ if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLU" = "xyes" -a "x$HAVE_GLES2" = "xyes"
# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED # define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
# include <OpenGL/gl3.h> # include <OpenGL/gl3.h>
# endif # endif
# include <OpenGL/glu.h>
# else # else
# include <GL/gl.h> # include <GL/gl.h>
# include <GL/glu.h>
# if __WIN32__ || _WIN32 # if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
# endif # endif
@ -870,7 +856,7 @@ if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLU" = "xyes" -a "x$HAVE_GLES2" = "xyes"
CPPFLAGS="$save_CPPFLAGS" CPPFLAGS="$save_CPPFLAGS"
fi fi
#dnl Check for OpenGL, GLU #dnl Check for OpenGL
echo host is $host echo host is $host
case $host in case $host in
*-android*) *-android*)
@ -932,9 +918,6 @@ case $host in
if test "x$NEED_GL" != "xno"; then if test "x$NEED_GL" != "xno"; then
GL_LIBS="$GL_LIBS -lGL" GL_LIBS="$GL_LIBS -lGL"
fi fi
if test "x$HAVE_GLU" = "xyes"; then
GL_LIBS="$GL_LIBS -lGLU"
fi
fi fi
dnl OpenGL|ES 2.0 dnl OpenGL|ES 2.0
@ -1050,9 +1033,6 @@ case $host in
if test "x$NEED_GL" != "xno"; then if test "x$NEED_GL" != "xno"; then
GL_LIBS="$GL_LIBS -lGL" GL_LIBS="$GL_LIBS -lGL"
fi fi
if test "x$HAVE_GLU" = "xyes"; then
GL_LIBS="$GL_LIBS -lGLU"
fi
USE_OPENGL=yes USE_OPENGL=yes
fi fi
fi fi
@ -1070,7 +1050,7 @@ case $host in
if test "$NEED_GL" != "xno"; then if test "$NEED_GL" != "xno"; then
if test "x$HAVE_WGL" = "xyes"; then if test "x$HAVE_WGL" = "xyes"; then
if test "$NEED_WGL" != "xno"; then if test "$NEED_WGL" != "xno"; then
GL_LIBS="$GL_LIBS -lgdi32 -lopengl32 -lglu32" GL_LIBS="$GL_LIBS -lgdi32 -lopengl32"
HAVE_WINDOW_WIN32=yes HAVE_WINDOW_WIN32=yes
USE_OPENGL=yes USE_OPENGL=yes
USE_WGL=yes USE_WGL=yes
@ -1278,10 +1258,8 @@ if test "x$USE_OPENGL" = "xyes"; then
# if __APPLE__ # if __APPLE__
# include <OpenGL/OpenGL.h> # include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h> # include <OpenGL/gl.h>
# include <OpenGL/glu.h>
# else # else
# include <GL/gl.h> # include <GL/gl.h>
# include <GL/glu.h>
# if __WIN32__ || _WIN32 # if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
# endif # endif

View file

@ -17,8 +17,6 @@ OPENGL_SOURCES = \
gstglfilterglass.h \ gstglfilterglass.h \
gstglfilterapp.c \ gstglfilterapp.c \
gstglfilterapp.h \ gstglfilterapp.h \
gstglfilterreflectedscreen.c \
gstglfilterreflectedscreen.h \
gstgldeinterlace.c \ gstgldeinterlace.c \
gstgldeinterlace.h \ gstgldeinterlace.h \
gltestsrc.c \ gltestsrc.c \
@ -43,8 +41,6 @@ OPENGL_SOURCES = \
if HAVE_PNG if HAVE_PNG
OPENGL_SOURCES += \ OPENGL_SOURCES += \
gstglbumper.c \
gstglbumper.h \
gstgldifferencematte.c \ gstgldifferencematte.c \
gstgldifferencematte.h gstgldifferencematte.h
endif endif

View file

@ -78,12 +78,7 @@ static gboolean gst_gl_filter_cube_set_caps (GstGLFilter * filter,
static void gst_gl_filter_cube_reset (GstGLFilter * filter); static void gst_gl_filter_cube_reset (GstGLFilter * filter);
static void gst_gl_filter_cube_reset_gl (GstGLFilter * filter); static void gst_gl_filter_cube_reset_gl (GstGLFilter * filter);
static gboolean gst_gl_filter_cube_init_shader (GstGLFilter * filter); static gboolean gst_gl_filter_cube_init_shader (GstGLFilter * filter);
static void _callback_gles2 (gint width, gint height, guint texture, static void _callback (gpointer stuff);
gpointer stuff);
#if GST_GL_HAVE_OPENGL
static void _callback_opengl (gint width, gint height, guint texture,
gpointer stuff);
#endif
static gboolean gst_gl_filter_cube_filter_texture (GstGLFilter * filter, static gboolean gst_gl_filter_cube_filter_texture (GstGLFilter * filter,
guint in_tex, guint out_tex); guint in_tex, guint out_tex);
@ -324,29 +319,14 @@ gst_gl_filter_cube_filter_texture (GstGLFilter * filter, guint in_tex,
guint out_tex) guint out_tex)
{ {
GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter); GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
GLCB cb = NULL;
GstGLAPI api;
api = gst_gl_context_get_gl_api (GST_GL_FILTER (cube_filter)->context); cube_filter->in_tex = in_tex;
#if GST_GL_HAVE_OPENGL
if (api & GST_GL_API_OPENGL)
cb = _callback_opengl;
#endif
if (api & (GST_GL_API_GLES2 | GST_GL_API_OPENGL3))
cb = _callback_gles2;
/* blocking call, use a FBO */ /* blocking call, use a FBO */
gst_gl_context_use_fbo (filter->context, gst_gl_context_use_fbo_v2 (filter->context,
GST_VIDEO_INFO_WIDTH (&filter->out_info), GST_VIDEO_INFO_WIDTH (&filter->out_info),
GST_VIDEO_INFO_HEIGHT (&filter->out_info), GST_VIDEO_INFO_HEIGHT (&filter->out_info), filter->fbo,
filter->fbo, filter->depthbuffer, out_tex, filter->depthbuffer, out_tex, _callback, (gpointer) cube_filter);
cb,
GST_VIDEO_INFO_WIDTH (&filter->in_info),
GST_VIDEO_INFO_HEIGHT (&filter->in_info),
in_tex, cube_filter->fovy, cube_filter->aspect,
cube_filter->znear, cube_filter->zfar,
GST_GL_DISPLAY_PROJECTION_PERSPECTIVE, (gpointer) cube_filter);
return TRUE; return TRUE;
} }
@ -387,73 +367,6 @@ static const GLfloat vertices[] = {
}; };
/* *INDENT-ON* */ /* *INDENT-ON* */
/* opengl scene, params: input texture (not the output filter->texture) */
#if GST_GL_HAVE_OPENGL
static void
_callback_opengl (gint width, gint height, guint texture, gpointer stuff)
{
GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (stuff);
GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFuncs *gl = filter->context->gl_vtable;
static GLfloat xrot = 0;
static GLfloat yrot = 0;
static GLfloat zrot = 0;
GLushort indices[] = {
0, 1, 2,
0, 2, 3,
4, 5, 6,
4, 6, 7,
8, 9, 10,
8, 10, 11,
12, 13, 14,
12, 14, 15,
16, 17, 18,
16, 18, 19,
20, 21, 22,
20, 22, 23
};
gl->Enable (GL_DEPTH_TEST);
gl->Enable (GL_TEXTURE_2D);
gl->BindTexture (GL_TEXTURE_2D, texture);
gl->ClearColor (cube_filter->red, cube_filter->green, cube_filter->blue, 0.0);
gl->Clear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
gl->MatrixMode (GL_PROJECTION);
gluLookAt (0.0, 0.0, -6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
gl->MatrixMode (GL_MODELVIEW);
gl->LoadIdentity ();
// gl->Translatef (0.0f, 0.0f, -5.0f);
gl->Rotatef (xrot, 1.0f, 0.0f, 0.0f);
gl->Rotatef (yrot, 0.0f, 1.0f, 0.0f);
gl->Rotatef (zrot, 0.0f, 0.0f, 1.0f);
gl->ClientActiveTexture (GL_TEXTURE0);
gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
gl->EnableClientState (GL_VERTEX_ARRAY);
gl->VertexPointer (3, GL_FLOAT, 5 * sizeof (float), vertices);
gl->TexCoordPointer (2, GL_FLOAT, 5 * sizeof (float), &vertices[3]);
gl->DrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, indices);
gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
gl->DisableClientState (GL_VERTEX_ARRAY);
gl->Disable (GL_DEPTH_TEST);
xrot += 0.3f;
yrot += 0.2f;
zrot += 0.4f;
}
#endif
static void static void
_bind_buffer (GstGLFilterCube * cube_filter) _bind_buffer (GstGLFilterCube * cube_filter)
{ {
@ -491,7 +404,7 @@ _unbind_buffer (GstGLFilterCube * cube_filter)
} }
static void static void
_callback_gles2 (gint width, gint height, guint texture, gpointer stuff) _callback (gpointer stuff)
{ {
GstGLFilter *filter = GST_GL_FILTER (stuff); GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter); GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
@ -531,7 +444,7 @@ _callback_gles2 (gint width, gint height, guint texture, gpointer stuff)
gst_gl_shader_use (cube_filter->shader); gst_gl_shader_use (cube_filter->shader);
gl->ActiveTexture (GL_TEXTURE0); gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (GL_TEXTURE_2D, texture); gl->BindTexture (GL_TEXTURE_2D, cube_filter->in_tex);
gst_gl_shader_set_uniform_1i (cube_filter->shader, "s_texture", 0); gst_gl_shader_set_uniform_1i (cube_filter->shader, "s_texture", 0);
gst_gl_shader_set_uniform_1f (cube_filter->shader, "xrot_degree", xrot); gst_gl_shader_set_uniform_1f (cube_filter->shader, "xrot_degree", xrot);
gst_gl_shader_set_uniform_1f (cube_filter->shader, "yrot_degree", yrot); gst_gl_shader_set_uniform_1f (cube_filter->shader, "yrot_degree", yrot);

View file

@ -52,6 +52,7 @@ struct _GstGLFilterCube
gdouble znear; gdouble znear;
gdouble zfar; gdouble zfar;
guint in_tex;
GLuint vao; GLuint vao;
GLuint vertex_buffer; GLuint vertex_buffer;
GLint attr_position; GLint attr_position;

View file

@ -1246,14 +1246,6 @@ gst_glimage_sink_on_resize (GstGLImageSink * gl_sink, gint width, gint height)
} else { } else {
gl->Viewport (0, 0, width, height); gl->Viewport (0, 0, width, height);
} }
#if GST_GL_HAVE_OPENGL
if (USING_OPENGL (gl_sink->context)) {
gl->MatrixMode (GL_PROJECTION);
gl->LoadIdentity ();
gluOrtho2D (0, width, 0, height);
gl->MatrixMode (GL_MODELVIEW);
}
#endif
} }
} }

View file

@ -65,13 +65,13 @@
#include "gstglfilterlaplacian.h" #include "gstglfilterlaplacian.h"
#include "gstglfilterglass.h" #include "gstglfilterglass.h"
#include "gstglfilterblur.h" #include "gstglfilterblur.h"
#include "gstglfilterreflectedscreen.h" /* #include "gstglfilterreflectedscreen.h" */
#include "gstglfiltersobel.h" #include "gstglfiltersobel.h"
#include "gstgldeinterlace.h" #include "gstgldeinterlace.h"
#include "gstglmosaic.h" #include "gstglmosaic.h"
#if HAVE_PNG #if HAVE_PNG
#include "gstgldifferencematte.h" #include "gstgldifferencematte.h"
#include "gstglbumper.h" /* #include "gstglbumper.h" */
#endif /* HAVE_PNG */ #endif /* HAVE_PNG */
#endif /* GST_GL_HAVE_OPENGL */ #endif /* GST_GL_HAVE_OPENGL */
@ -174,12 +174,12 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS)) { GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS)) {
return FALSE; return FALSE;
} }
#if 0
if (!gst_element_register (plugin, "glfilterreflectedscreen", if (!gst_element_register (plugin, "glfilterreflectedscreen",
GST_RANK_NONE, GST_TYPE_GL_FILTER_REFLECTED_SCREEN)) { GST_RANK_NONE, GST_TYPE_GL_FILTER_REFLECTED_SCREEN)) {
return FALSE; return FALSE;
} }
#endif
if (!gst_element_register (plugin, "gldeinterlace", if (!gst_element_register (plugin, "gldeinterlace",
GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) { GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
return FALSE; return FALSE;
@ -194,11 +194,12 @@ plugin_init (GstPlugin * plugin)
GST_RANK_NONE, gst_gl_differencematte_get_type ())) { GST_RANK_NONE, gst_gl_differencematte_get_type ())) {
return FALSE; return FALSE;
} }
#if 0
if (!gst_element_register (plugin, "glbumper", if (!gst_element_register (plugin, "glbumper",
GST_RANK_NONE, gst_gl_bumper_get_type ())) { GST_RANK_NONE, gst_gl_bumper_get_type ())) {
return FALSE; return FALSE;
} }
#endif
#endif /* HAVE_PNG */ #endif /* HAVE_PNG */
#endif /* GST_GL_HAVE_OPENGL */ #endif /* GST_GL_HAVE_OPENGL */

View file

@ -74,10 +74,8 @@
# define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED # define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
# include <OpenGL/gl3.h> # include <OpenGL/gl3.h>
# endif # endif
# include <OpenGL/glu.h>
# else # else
# include <GL/gl.h> # include <GL/gl.h>
# include <GL/glu.h>
# if __WIN32__ || _WIN32 # if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
# endif # endif

View file

@ -165,110 +165,6 @@ gst_gl_framebuffer_generate (GstGLFramebuffer * frame, gint width, gint height,
return TRUE; return TRUE;
} }
gboolean
gst_gl_framebuffer_use (GstGLFramebuffer * frame, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB cb, gint input_tex_width,
gint input_tex_height, GLuint input_tex, gdouble proj_param1,
gdouble proj_param2, gdouble proj_param3, gdouble proj_param4,
GstGLDisplayProjection projection, gpointer stuff)
{
const GstGLFuncs *gl;
#if GST_GL_HAVE_GLES2
GLint viewport_dim[4];
#endif
g_return_val_if_fail (GST_IS_GL_FRAMEBUFFER (frame), FALSE);
g_return_val_if_fail (input_tex_width > 0 && input_tex_height > 0, FALSE);
g_return_val_if_fail (texture_fbo_width > 0 && texture_fbo_height > 0, FALSE);
g_return_val_if_fail (input_tex != 0, FALSE);
g_return_val_if_fail (fbo != 0, FALSE);
g_return_val_if_fail (texture_fbo != 0, FALSE);
g_return_val_if_fail (cb != NULL, FALSE);
gl = frame->context->gl_vtable;
GST_TRACE ("Binding v1 FBO %u dimensions:%ux%u with texture:%u "
"dimensions:%ux%u", fbo, texture_fbo_width,
texture_fbo_height, texture_fbo, input_tex_width, input_tex_height);
gl->BindFramebuffer (GL_FRAMEBUFFER, fbo);
/*setup a texture to render to */
gl->BindTexture (GL_TEXTURE_2D, texture_fbo);
/* attach the texture to the FBO to renderer to */
gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, texture_fbo, 0);
gst_gl_context_clear_shader (frame->context);
#if GST_GL_HAVE_OPENGL
if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_OPENGL) {
gl->PushAttrib (GL_VIEWPORT_BIT);
gl->MatrixMode (GL_PROJECTION);
gl->PushMatrix ();
gl->LoadIdentity ();
switch (projection) {
case GST_GL_DISPLAY_PROJECTION_ORTHO2D:
gluOrtho2D (proj_param1, proj_param2, proj_param3, proj_param4);
break;
case GST_GL_DISPLAY_PROJECTION_PERSPECTIVE:
gluPerspective (proj_param1, proj_param2, proj_param3, proj_param4);
break;
default:
gst_gl_context_set_error (frame->context, "Unknow fbo projection %d",
projection);
}
gl->MatrixMode (GL_MODELVIEW);
gl->PushMatrix ();
gl->LoadIdentity ();
}
#endif
#if GST_GL_HAVE_GLES2
if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_GLES2)
gl->GetIntegerv (GL_VIEWPORT, viewport_dim);
#endif
gl->Viewport (0, 0, texture_fbo_width, texture_fbo_height);
#if GST_GL_HAVE_OPENGL
if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_OPENGL) {
const GLenum rt[] = { GL_COLOR_ATTACHMENT0 };
gl->DrawBuffers (1, rt);
}
#endif
gl->ClearColor (0.0, 0.0, 0.0, 0.0);
gl->Clear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
cb (input_tex_width, input_tex_height, input_tex, stuff);
#if GST_GL_HAVE_OPENGL
if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_OPENGL) {
const GLenum rt[] = { GL_NONE };
gl->DrawBuffers (1, rt);
gl->MatrixMode (GL_PROJECTION);
gl->PopMatrix ();
gl->MatrixMode (GL_MODELVIEW);
gl->PopMatrix ();
gl->PopAttrib ();
}
#endif
#if GST_GL_HAVE_GLES2
if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_GLES2) {
gl->Viewport (viewport_dim[0], viewport_dim[1], viewport_dim[2],
viewport_dim[3]);
}
#endif
gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
return TRUE;
}
gboolean gboolean
gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width, gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer, gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,

View file

@ -58,13 +58,6 @@ GstGLFramebuffer *gst_gl_framebuffer_new (GstGLContext *context);
gboolean gst_gl_framebuffer_generate (GstGLFramebuffer *frame, gint width, gint height, gboolean gst_gl_framebuffer_generate (GstGLFramebuffer *frame, gint width, gint height,
guint * fbo, guint * depthbuffer); guint * fbo, guint * depthbuffer);
gboolean gst_gl_framebuffer_use (GstGLFramebuffer * frame, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB cb, gint input_tex_width,
gint input_tex_height, GLuint input_tex, gdouble proj_param1,
gdouble proj_param2, gdouble proj_param3, gdouble proj_param4,
GstGLDisplayProjection projection, gpointer stuff);
gboolean gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width, gboolean gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer, gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB_V2 cb, gpointer stuff); GLuint texture_fbo, GLCB_V2 cb, gpointer stuff);

View file

@ -341,68 +341,6 @@ gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height,
return TRUE; return TRUE;
} }
typedef struct _UseFBO
{
GstGLFramebuffer *frame;
gint texture_fbo_width;
gint texture_fbo_height;
GLuint fbo;
GLuint depth_buffer;
GLuint texture_fbo;
GLCB cb;
gint input_tex_width;
gint input_tex_height;
GLuint input_tex;
gdouble proj_param1;
gdouble proj_param2;
gdouble proj_param3;
gdouble proj_param4;
GstGLDisplayProjection projection;
gpointer stuff;
} UseFBO;
static void
_use_fbo (GstGLContext * context, UseFBO * data)
{
gst_gl_framebuffer_use (data->frame, data->texture_fbo_width,
data->texture_fbo_height, data->fbo, data->depth_buffer,
data->texture_fbo, data->cb, data->input_tex_width,
data->input_tex_height, data->input_tex, data->proj_param1,
data->proj_param2, data->proj_param3, data->proj_param4, data->projection,
data->stuff);
}
/* Called by glfilter */
/* this function really has to be simplified... do we really need to
set projection this way? Wouldn't be better a set_projection
separate call? or just make glut functions available out of
gst-libs and call it if needed on drawcallback? -- Filippo */
/* GLCB too.. I think that only needed parameters should be
* GstGLDisplay *display and gpointer data, or just gpointer data */
/* ..everything here has to be simplified! */
gboolean
gst_gl_context_use_fbo (GstGLContext * context, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB cb, gint input_tex_width,
gint input_tex_height, GLuint input_tex, gdouble proj_param1,
gdouble proj_param2, gdouble proj_param3, gdouble proj_param4,
GstGLDisplayProjection projection, gpointer stuff)
{
GstGLFramebuffer *frame = gst_gl_framebuffer_new (context);
UseFBO data =
{ frame, texture_fbo_width, texture_fbo_height, fbo, depth_buffer,
texture_fbo, cb, input_tex_width, input_tex_height, input_tex,
proj_param1, proj_param2, proj_param3, proj_param4, projection, stuff
};
gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _use_fbo, &data);
gst_object_unref (frame);
return TRUE;
}
typedef struct _UseFBO2 typedef struct _UseFBO2
{ {
GstGLFramebuffer *frame; GstGLFramebuffer *frame;

View file

@ -76,12 +76,6 @@ void gst_gl_generate_texture_full (GstGLContext * context, const GstVideoInfo *
gboolean gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height, gboolean gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height,
GLuint * fbo, GLuint * depthbuffer); GLuint * fbo, GLuint * depthbuffer);
gboolean gst_gl_context_use_fbo (GstGLContext * context, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB cb, gint input_texture_width,
gint input_texture_height, GLuint input_texture, gdouble proj_param1,
gdouble proj_param2, gdouble proj_param3, gdouble proj_param4,
GstGLDisplayProjection projection, gpointer stuff);
gboolean gst_gl_context_use_fbo_v2 (GstGLContext * context, gint texture_fbo_width, gboolean gst_gl_context_use_fbo_v2 (GstGLContext * context, gint texture_fbo_width,
gint texture_fbo_height, GLuint fbo, GLuint depth_buffer, gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
GLuint texture_fbo, GLCB_V2 cb, gpointer stuff); GLuint texture_fbo, GLCB_V2 cb, gpointer stuff);

View file

@ -19,7 +19,6 @@
*/ */
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#if __WIN32__ || _WIN32 #if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
#endif #endif
@ -70,7 +69,6 @@ static gboolean reshapeCallback (void *gl_sink, void *context, GLuint width, GLu
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
return TRUE; return TRUE;

View file

@ -19,7 +19,6 @@
*/ */
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#if __WIN32__ || _WIN32 #if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
#endif #endif
@ -92,7 +91,6 @@ static gboolean reshapeCallback (void * gl_sink, void *context, GLuint width, GL
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
return TRUE; return TRUE;

View file

@ -19,7 +19,6 @@
*/ */
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#if __WIN32__ || _WIN32 #if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
#endif #endif
@ -94,7 +93,6 @@ static gboolean reshapeCallback (void *gl_sink, void *context, GLuint width, GLu
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
return TRUE; return TRUE;

View file

@ -19,7 +19,6 @@
*/ */
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#if __WIN32__ || _WIN32 #if __WIN32__ || _WIN32
# include <GL/glext.h> # include <GL/glext.h>
#endif #endif

View file

@ -20,7 +20,6 @@
#include <gst/video/videooverlay.h> #include <gst/video/videooverlay.h>
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#include "pipeline.h" #include "pipeline.h"
Pipeline::Pipeline(const WId id, const QString videoLocation): Pipeline::Pipeline(const WId id, const QString videoLocation):
@ -165,7 +164,6 @@ gboolean Pipeline::reshapeCallback (void *sink, void *context, guint width, guin
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
return TRUE; return TRUE;

View file

@ -20,7 +20,6 @@
#include <gst/video/videooverlay.h> #include <gst/video/videooverlay.h>
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#include "pipeline.h" #include "pipeline.h"
Pipeline::Pipeline(const WId id, const QString videoLocation): Pipeline::Pipeline(const WId id, const QString videoLocation):
@ -162,7 +161,6 @@ gboolean Pipeline::reshapeCallback (void *sink, void *context, guint width, guin
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
return TRUE; return TRUE;

View file

@ -122,7 +122,6 @@ QGLRenderer::resizeGL (int width, int height)
glMatrixMode (GL_PROJECTION); glMatrixMode (GL_PROJECTION);
glLoadIdentity (); glLoadIdentity ();
gluPerspective (45.0f, (GLfloat) width / (GLfloat) height, 0.1f, 100.0f);
glMatrixMode (GL_MODELVIEW); glMatrixMode (GL_MODELVIEW);
} }

View file

@ -26,7 +26,6 @@
#endif #endif
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glu.h>
#include "SDL/SDL.h" #include "SDL/SDL.h"
#include "SDL/SDL_opengl.h" #include "SDL/SDL_opengl.h"
@ -62,8 +61,6 @@ InitGL (int Width, int Height) // We call this right after our OpenGL window is
glMatrixMode (GL_PROJECTION); glMatrixMode (GL_PROJECTION);
glLoadIdentity (); // Reset The Projection Matrix glLoadIdentity (); // Reset The Projection Matrix
gluPerspective (45.0f, (GLfloat) Width / (GLfloat) Height, 0.1f, 100.0f); // Calculate The Aspect Ratio Of The Window
glMatrixMode (GL_MODELVIEW); glMatrixMode (GL_MODELVIEW);
} }