EGL + GBM + OPENGLES 最简实例

这篇具有很好参考价值的文章主要介绍了EGL + GBM + OPENGLES 最简实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文主要介绍如何在 linux 下实现一个 egl + gbm + opengles 的最简demo 实例
软硬件环境
硬件:PC
软件:ubuntu18.04 egl1.4 opengles2.0 libgbm libdrm


一、GBM

  • GBM(全称是Generic Buffer Manager)是一个用于管理图形缓冲区的通用接口,主要用于在 Linux 系统上实现图形显示和渲染,是以动态库 libgbm 来进行呈现的
  • GBM 提供了一组 API,允许用户通过创建和管理缓冲区对象来与底层图形设备交互。它可以与不同的图形后端(如 DRM、EGL 和 Mesa 等)集成,以便在不同的系统中实现硬件加速图形

二、egl + gbm + opengles 最简 demo 实例

1.egl_gbm.c

egl_gbm.c 代码如下文章来源地址https://www.toymoban.com/news/detail-817179.html

#include <xf86drm.h>
#include <xf86drmMode.h>
#include <gbm.h>
#include <EGL/egl.h>
#include <GLES2/gl2.h>
#include <stdlib.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
 
#define EXIT(msg) {
      fputs (msg, stderr); exit (EXIT_FAILURE); }
 
void assertEGLError(const char *msg)
{
   
    EGLint error = eglGetError();
    if(error != EGL_SUCCESS) {
   
        printf("EGL error 0x%x at %s\n", error, msg);
    }
}
 
static int g_device_fd;
 
static uint32_t connector_id;
static drmModeModeInfo mode_info;
static drmModeCrtc *crtc;
static struct gbm_device *gbm_device;
 
static EGLDisplay display;
static EGLContext context;
static struct gbm_surface *gbm_surface;
static EGLSurface egl_surface;
 
static struct gbm_bo *previous_bo = NULL;
static uint32_t previous_fb;

static void swap_buffers () {
   
	eglSwapBuffers (display, egl_surface);
	struct gbm_bo *bo = gbm_surface_lock_front_buffer (gbm_surface);
	uint32_t handle 

到了这里,关于EGL + GBM + OPENGLES 最简实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)

    wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)

    `本文主要介绍opengles 如何使用 第三方库Assimp(基于C++) 加载一个最简单的带光照信息以及纹理 的3d 立方体model,3d 立方体 model 信息存储在 cube.obj 中,光照信息以及纹理图片信息存储在cube.Mtl 材质文件中,主要是介绍如何使用Assimp 解析Mtl 文件。 软硬件环境: 硬件:PC 软件

    2024年04月14日
    浏览(14)
  • wayland(xdg_wm_base) + egl + opengles 光照模型实例(十五)

    本文主要介绍如何使用 wayland(xdg_wm_base) + egl + opengles3.0 绘制一个使用冯氏光照模型(Phong Lighting Model)的绕Y轴旋转的正方体,主要涉及环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照,使用一个固定位置和颜色的光源。 软硬件环境: 硬件:PC 软件:ubuntu22.04 egl1.4 opengles3.0 weston

    2024年03月15日
    浏览(12)
  • wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

    wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

    本文主要介绍如何在一个wayland client 里面使用 egl + opengles 读取一个 pattern 图片数据进行纹理贴图,在阅读本篇文章之前,建议先读一下之前的文章 《wayland(xdg_wm_base) + egl + opengles 最简实例(一)》 软硬件环境 硬件:PC 软件:ubuntu22.04 weston9.0 opengles2.0/3.0 egl1.4 在ubuntu 下执行如下

    2024年02月20日
    浏览(9)
  • wayland(xdg_wm_base) + egl + opengles 使用FBO渲染到纹理实例(六)

    本文主要介绍 如何在 opengles 中使用FBO 实现渲染到纹理的功能 软硬件环境: 硬件:PC 软件:ubuntu22.04 opengles3.0 egl1.4 FBO(Framebuffer Object)是OpenGL的一个扩展,它允许我们将渲染结果直接绘制到一个纹理或者渲染缓冲对象中,而不是默认的帧缓冲。 使用FBO可以实现一些高级的渲

    2024年02月20日
    浏览(19)
  • OpenGL ES EGL eglCreatePbufferSurface

    OpenGL ES EGL eglCreatePbufferSurface

    目录 一. EGL 前言 二. EGL 绘制流程简介 三.eglCreatePbufferSurface 函数简介 1.eglCreatePbufferSurface 简介 2.eglCreatePbufferSurface 和 eglCreateWindowSurface 区别 四.eglCreatePbufferSurface 使用 五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : O

    2024年02月01日
    浏览(12)
  • OpenGL ES EGL eglMakeCurrent

    OpenGL ES EGL eglMakeCurrent

    目录 一. EGL 前言 二. EGL 绘制流程简介 三.eglMakeCurrent 函数简介 1.eglMakeCurrent 简介 2.eglMakeCurrent 实现 3.eglMakeCurrent 使用 四.关于多个 EGLContext 五.共享 EGLContext 六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目

    2024年02月14日
    浏览(10)
  • OpenGL ES EGL eglCreateContext

    OpenGL ES EGL eglCreateContext

    目录 一. EGL 前言 二. EGL 绘制流程简介 三.eglCreateContext 函数简介 1.关于属性列表 attribList 2.关于返回值 四.eglCreateContext 函数使用 五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 特效 零基础 Op

    2023年04月08日
    浏览(9)
  • OpenGL ES EGL eglCreateWindowSurface

    OpenGL ES EGL eglCreateWindowSurface

    一. EGL 前言 二. EGL 绘制流程简介 三.eglCreateWindowSurface 函数简介 1.eglCreateWindowSurface 函数 2.EGLSurface 分类 四.eglCreateWindowSurface 函数使用 五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 OpenGL ES 特效 零基础

    2023年04月10日
    浏览(9)
  • 【Android OpenGL开发】OpenGL ES与EGL介绍

    【Android OpenGL开发】OpenGL ES与EGL介绍

    OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,主要用于图像的渲染。 Android提供了简化版的OpenGL接口,即OpenGL ES。 早先定义 OpenGL ES 是 OpenGL 的嵌入式设备版本,用于移动端平台(Android、iOS),但由于嵌入式设备要求的是高性能,所以一些其它纯

    2024年02月04日
    浏览(10)
  • OpenGL ES与EGL的关系(二十一),完美讲解内存缓存LruCache实现原理

    OpenGL ES与EGL的关系(二十一),完美讲解内存缓存LruCache实现原理

    glEnable(GL_TEXTURE_2D); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); const GLint xc = (mWidth - mAndroid[0].w) / 2; const GLint yc = (mHeight - mAndroid[0].h) / 2; const Rect updateRect(xc, yc, xc + mAndroid[0].w, yc + mAndroid[0].h); glScissor(updateRect.left, mHeight - updateRect.bottom, updateRect.width(), updateRect.height()); // Blend st

    2024年04月11日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包