本文整理汇总了C++中GstGLFuncs::GetString方法的典型用法代码示例。如果您正苦于以下问题:C++ GstGLFuncs::GetString方法的具体用法?C++ GstGLFuncs::GetString怎么用?C++ GstGLFuncs::GetString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GstGLFuncs
的用法示例。
在下文中一共展示了GstGLFuncs::GetString方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/**
* gst_gl_context_fill_info:
* @context: a #GstGLContext:
*
* Fills @context's info (version, extensions, vtable, etc) from the GL
* context in the current thread. Typically used with wrapped contexts to
* allow wrapped contexts to be used as regular #GstGLContext's.
*
* Since: 1.6
*/
gboolean
gst_gl_context_fill_info (GstGLContext * context, GError ** error)
{
GstGLFuncs *gl;
GString *ext_g_str = NULL;
const gchar *ext_const_c_str = NULL;
GstGLAPI gl_api;
gboolean ret;
g_return_val_if_fail (GST_IS_GL_CONTEXT (context), FALSE);
g_return_val_if_fail (context->priv->active_thread == g_thread_self (),
FALSE);
gl = context->gl_vtable;
gl_api = gst_gl_context_get_gl_api (context);
gl->GetError = gst_gl_context_get_proc_address (context, "glGetError");
gl->GetString = gst_gl_context_get_proc_address (context, "glGetString");
gl->GetStringi = gst_gl_context_get_proc_address (context, "glGetStringi");
gl->GetIntegerv = gst_gl_context_get_proc_address (context, "glGetIntegerv");
if (!gl->GetError || !gl->GetString) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
"could not GetProcAddress core opengl functions");
goto failure;
}
/* gl api specific code */
ret = _create_context_info (context, gl_api, &context->priv->gl_major,
&context->priv->gl_minor, error);
if (!ret) {
g_assert (error == NULL || *error != NULL);
goto failure;
}
/* GL core contexts and GLES3 */
if (gl->GetIntegerv && gl->GetStringi && context->priv->gl_major >= 3)
ext_g_str = _build_extension_string (context);
if (ext_g_str && ext_g_str->len) {
GST_DEBUG_OBJECT (context, "GL_EXTENSIONS: %s", ext_g_str->str);
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
context->priv->gl_minor, ext_g_str->str);
context->priv->gl_exts = g_string_free (ext_g_str, FALSE);
} else {
ext_const_c_str = (const gchar *) gl->GetString (GL_EXTENSIONS);
if (!ext_const_c_str)
ext_const_c_str = "";
GST_DEBUG_OBJECT (context, "GL_EXTENSIONS: %s", ext_const_c_str);
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
context->priv->gl_minor, ext_const_c_str);
context->priv->gl_exts = g_strdup (ext_const_c_str);
}
if (gl_api & GST_GL_API_OPENGL3
&& !gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL3, 4, 1)
&& !gst_gl_check_extension ("GL_ARB_ES2_compatibility",
context->priv->gl_exts)) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
"An opengl3 context created but the required ES2 compatibility was not found");
goto failure;
}
/* Does not implement OES_vertex_array_object properly, see
* https://bugzilla.gnome.org/show_bug.cgi?id=750185 */
if (g_strcmp0 ((const gchar *) gl->GetString (GL_VENDOR),
"Imagination Technologies") == 0
&& g_strcmp0 ((const gchar *) gl->GetString (GL_RENDERER),
"PowerVR SGX 544MP") == 0) {
gl->GenVertexArrays = NULL;
gl->DeleteVertexArrays = NULL;
gl->BindVertexArray = NULL;
gl->IsVertexArray = NULL;
}
return TRUE;
failure:
return FALSE;
}
示例2: api
//.........这里部分代码省略.........
GST_INFO ("created context");
if (!context_class->activate (context, TRUE)) {
g_set_error (error, GST_GL_CONTEXT_ERROR,
GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE,
"Failed to activate the GL Context");
g_free (compiled_api_s);
g_free (user_api_string);
goto failure;
}
gl_api = gst_gl_context_get_gl_api (context);
g_assert (gl_api != GST_GL_API_NONE && gl_api != GST_GL_API_ANY);
api_string = gst_gl_api_to_string (gl_api);
GST_INFO ("available GL APIs: %s", api_string);
if (((compiled_api & gl_api) & user_api) == GST_GL_API_NONE) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API,
"failed to create context, context "
"could not provide correct api. user (%s), compiled (%s), context (%s)",
user_api_string, compiled_api_s, api_string);
g_free (api_string);
g_free (compiled_api_s);
g_free (user_api_string);
goto failure;
}
g_free (api_string);
g_free (compiled_api_s);
g_free (user_api_string);
gl->GetError = gst_gl_context_get_proc_address (context, "glGetError");
gl->GetString = gst_gl_context_get_proc_address (context, "glGetString");
gl->GetStringi = gst_gl_context_get_proc_address (context, "glGetStringi");
gl->GetIntegerv = gst_gl_context_get_proc_address (context, "glGetIntegerv");
if (!gl->GetError || !gl->GetString) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
"could not GetProcAddress core opengl functions");
goto failure;
}
/* gl api specific code */
ret = _create_context_info (context, gl_api, &context->priv->gl_major,
&context->priv->gl_minor, error);
if (!ret) {
g_assert (error == NULL || *error != NULL);
goto failure;
}
/* GL core contexts and GLES3 */
if (gl->GetIntegerv && gl->GetStringi && context->priv->gl_major >= 3)
ext_g_str = _build_extension_string (context);
if (ext_g_str && ext_g_str->len) {
GST_DEBUG_OBJECT (context, "GL_EXTENSIONS: %s", ext_g_str->str);
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
context->priv->gl_minor, ext_g_str->str);
context->priv->gl_exts = g_string_free (ext_g_str, FALSE);
} else {
ext_const_c_str = (const gchar *) gl->GetString (GL_EXTENSIONS);
if (!ext_const_c_str)
ext_const_c_str = "";
示例3:
/**
* gst_gl_context_fill_info:
* @context: a #GstGLContext:
*
* Fills @context's info (version, extensions, vtable, etc) from the GL
* context in the current thread. Typically used with wrapped contexts to
* allow wrapped contexts to be used as regular #GstGLContext's.
*
* Since: 1.6
*/
gboolean
gst_gl_context_fill_info (GstGLContext * context, GError ** error)
{
GstGLFuncs *gl;
GString *ext_g_str = NULL;
const gchar *ext_const_c_str = NULL;
GstGLAPI gl_api;
gboolean ret;
g_return_val_if_fail (GST_GL_IS_CONTEXT (context), FALSE);
g_return_val_if_fail (context->priv->active_thread == g_thread_self (),
FALSE);
gl = context->gl_vtable;
gl_api = gst_gl_context_get_gl_api (context);
gl->GetError = gst_gl_context_get_proc_address (context, "glGetError");
gl->GetString = gst_gl_context_get_proc_address (context, "glGetString");
gl->GetStringi = gst_gl_context_get_proc_address (context, "glGetStringi");
gl->GetIntegerv = gst_gl_context_get_proc_address (context, "glGetIntegerv");
if (!gl->GetError || !gl->GetString) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
"could not GetProcAddress core opengl functions");
goto failure;
}
/* gl api specific code */
ret = _create_context_info (context, gl_api, &context->priv->gl_major,
&context->priv->gl_minor, error);
if (!ret) {
g_assert (error == NULL || *error != NULL);
goto failure;
}
/* GL core contexts and GLES3 */
if (gl->GetIntegerv && gl->GetStringi && context->priv->gl_major >= 3)
ext_g_str = _build_extension_string (context);
if (ext_g_str && ext_g_str->len) {
GST_DEBUG_OBJECT (context, "GL_EXTENSIONS: %s", ext_g_str->str);
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
context->priv->gl_minor, ext_g_str->str);
context->priv->gl_exts = g_string_free (ext_g_str, FALSE);
} else {
ext_const_c_str = (const gchar *) gl->GetString (GL_EXTENSIONS);
if (!ext_const_c_str)
ext_const_c_str = "";
GST_DEBUG_OBJECT (context, "GL_EXTENSIONS: %s", ext_const_c_str);
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
context->priv->gl_minor, ext_const_c_str);
context->priv->gl_exts = g_strdup (ext_const_c_str);
}
if (gl_api & GST_GL_API_OPENGL3
&& !gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL3, 4, 1)
&& !gst_gl_check_extension ("GL_ARB_ES2_compatibility",
context->priv->gl_exts)) {
g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
"An opengl3 context created but the required ES2 compatibility was not found");
goto failure;
}
return TRUE;
failure:
return FALSE;
}