如何在android ndk中使用GraphicBuffer

2023-11-24

我问这个问题是参考我的问题的答案如何提高android中opengl es的显示性能。我试图构建使用 GraphicBuffer 和 ndk-r9d 的代码。但它说 GraphicBuffer 没有在此范围内声明。对于eglCreateImageKHR 和glEGLImageTargetTexture2DOES 的注释相同。

我添加了 EGL/eglext.h 和 GLES2/gl2ext.h 。我尝试包含 ui/GraphicBuffer.h 但它没有包含它。是否需要添加其他头文件?

我添加了下面给出的代码以避免使用 glTexSubImage2D()。

  GraphicBuffer * pGraphicBuffer = new GraphicBuffer(frame_width, frame_height, PIXEL_FORMAT_RGB_565, GraphicBuffer::USAGE_SW_WRITE_OFTEN | GraphicBuffer::USAGE_HW_TEXTURE);

        // Lock the buffer to get a pointer
        unsigned char * pBitmap = NULL;
        pGraphicBuffer->lock(GraphicBuffer::USAGE_SW_WRITE_OFTEN,(void **)&pBitmap);

        // Write 2D image to pBitmap
        memcpy(pBitmap, frame_buffer, frame_width * frame_height * 3);

        // Unlock to allow OpenGL ES to use it
        pGraphicBuffer->unlock();

        EGLClientBuffer ClientBufferAddress = pGraphicBuffer->getNativeBuffer();
        EGLint SurfaceType = EGL_NATIVE_BUFFER_ANDROID;

        // Make an EGL Image at the same address of the native client buffer
        EGLDisplay eglDisplayHandle = eglGetDisplay(EGL_DEFAULT_DISPLAY);

        // Create an EGL Image with these attributes
        EGLint eglImageAttributes[] = {EGL_WIDTH, frame_width, EGL_HEIGHT, frame_height, EGL_MATCH_FORMAT_KHR,  EGL_FORMAT_RGB_565_KHR, EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE};

        EGLImageKHR eglImageHandle = eglCreateImageKHR(eglDisplayHandle, EGL_NO_CONTEXT, SurfaceType, ClientBufferAddress, eglImageAttributes);

        // Create a texture and bind it to GL_TEXTURE_2D
/*        EGLint TextureHandle;
        glGenTextures(1, &TextureHandle);
        glBindTexture(GL_TEXTURE_2D, TextureHandle);
*/
        // Attach the EGL Image to the same texture
        glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImageHandle);

我该怎么做才能让它运行......

提前致谢..


我这些天也在研究这个问题。

许多博客表示需要一份 Android 源代码的副本才能与您的项目链接。我相信从中获取功能会更优雅libui.so在运行时,这就是 Aleksandar Stojiljkovic 提到的“替代方法”。

我写了一个简单的库来做到这一点。Here is it.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android ndk中使用GraphicBuffer 的相关文章

  • java.lang.IllegalArgumentException:此组件要求您指定有效的 android:textAppearance 属性

    我的布局文件之一中有一个 com google android material button MaterialButton 组件 当我使用最新版本的 Material Components 库 com google android mat
  • 如何获取每个StorageVolume的可用大小和总大小?

    背景 谷歌 悲伤 计划破坏存储权限 https www xda developers com android q storage access framework scoped storage 这样应用程序将无法使用标准文件 API 和文件
  • 我在布局上看不到任何 FirebaseRecyclerAdapter 项目

    我试图将数据从 Firebase 数据库检索到我的布局 但我看不到任何项目FirebaseRecyclerAdapter在布局中 请帮忙 我按照一个教程展示了如何做到这一点 当我运行应用程序时 我没有看到任何项目 但我可以滚动 public
  • 如何在android中显示保存在sdcard文件夹中的图像[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 当我正在显
  • 如何在 Linux 内核中定义并触发我自己的新软中断?

    我想在 Linux 内核中创建自己的软中断 这是正确的方法吗 In the init我想触发该模块的softirq我将添加一个调用 394 void open softirq int nr void action struct softir
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一

随机推荐

  • Java JIT 编译器导致 OutOfMemoryError

    我们最近开始偶尔崩溃的一个应用程序 并显示一条有关 java lang OutOfMemoryError 为 Chunk new 请求 8589934608 字节 交换空间不足 的消息 我在网上环顾四周 到处的建议都仅限于 恢复到以前的 J
  • JPA 2 和 Hibernate 3.5.1 MEMBER OF 查询不起作用

    我正在尝试以下 JPQL 但它失败了 Query query em createQuery SELECT u FROM User u WHERE admin MEMBER OF u roles List users query query
  • 从 NFC 标签读取数据

    您好 我正在开发一个用于向 NFC 标签读取和写入数据的应用程序 我在从 NFC 标签读取数据时遇到问题 当我尝试读取数据时 我的应用程序第一次崩溃 当我第二次扫描标签时 应用程序读取数据时再次崩溃 请帮我解决这个问题 这是我的代码 提前致
  • 我可以将一个查询拆分为多个查询或创建并行性来加速查询吗?

    我有一张桌子avl pool 我有一个函数可以在地图上找到最接近该链接的链接 x y 位置 此选择的性能非常线性 该函数需要约 8 毫秒才能执行 所以计算一下这个 select 1000 行需要 8 秒 或者正如我在此示例中所示 20 00
  • 抛出格式异常 C#

    我试图在有人在提示输入年龄时尝试输入非整数字符的实例中抛出格式异常 Console WriteLine Your age age Int32 Parse Console ReadLine 我不熟悉 C 语言 可以使用帮助来为此实例编写 tr
  • 反编译APK,修改它然后重新编译它

    我需要修改现有的 APK 修改源代码 然后重新编译它 我可以使用 dex2jar 或 apktool 反编译它 效果很好 从jar文件中我可以获得java源代码 使用jd gui 然后我可以修改java文件 但现在我想知道如何重新编译jav
  • StartCoroutine/yield 返回模式在 Unity 中到底如何工作?

    我了解了协程的原理 我知道如何达到标准StartCoroutine yield return在 Unity 中的 C 中工作的模式 例如调用一个方法返回IEnumerator via StartCoroutine并在该方法中做某事 做yie
  • Enum 类型属性的 RestSharp 反序列化

    我有一个对象 var testTcc new TrendingConfigurationConfigDto TrendingConfigurationId 1 ConfigId 1 DeviceId 1 Selected true YAxi
  • 手动安装 NPM 包

    我使用node windows installer v0 8 3来安装nodejs 当我尝试像这样安装express时 npm install express 它不起作用 我认为这是因为我的公司使用了代理 所以我从github下载了expr
  • 本机库加载时出现莫名其妙的 UnsatisfiedLinkError

    首先 也是最重要的 我的申请一般有效 我在所有四个 32 位 CPU ABI 上有许多客户端 并且他们运行该应用程序没有任何问题 本机库是为所有四种架构构建的 库就在那里 方法都就位并且命名正确 然而 我偶尔会收到无法加载本机库的异常报告
  • 如何从 pdf 文件中提取附件?

    我有大量 pdf 文档 其中附有 xml 文件 我想提取那些附加的 xml 文件并读取它们 如何使用 net 以编程方式执行此操作 iTextSharp 也非常有能力提取附件 尽管您可能必须使用低级对象来执行此操作 有两种方法可以在 PDF
  • GDB 警告:在 0x7ffff7ffd000 处添加的符号文件系统提供的 DSO 中未找到可加载部分

    abijith bufferOverFlow gdb a out GNU gdb GDB 7 6 Copyright C 2013 Free Software Foundation Inc License GPLv3 GNU GPL ver
  • PHP向多维数组的每个子数组添加元素

    我有一个看起来像这样的数组 array 0 gt array id gt 1 title gt title 1 1 gt array id gt 10 title gt title 10 2 gt array id gt 11 title
  • 简单的 nginx 反向代理似乎会删除一些标头

    我是 nginx 的初学者 我在 8080 上有一个简单的网络服务器 我想在这个相当小的环境中将所有流量传递到它 我的代理似乎可以工作 只是当它到达我的上游服务器时 自定义标头不存在 服务器块如下 我需要添加什么来保留我的自定义标头 在这种
  • IOS共享扩展:如何从笔记帖子中读取内容

    我希望我的应用程序能够解析笔记应用程序帖子以及其他文本编辑器帖子中的文本 因此我创建了一个共享扩展目标 一切工作正常 直到我准备应用程序发布 替换TRUEPREDICATE经过 NSExtensionActivationRule 据说 在我
  • 像谷歌地图一样滑动BottomSheet

    目前我正在使用来自this lib 我想实现这样的图像动画谷歌地图在滑动底页时 我想按照所示的图像一起滑动图像视图 我已经用过这个了帮助链接但没有得到 我已经尝试了很多时间 但找不到任何解决方案 任何帮助都可以 提前致谢 你能行的修改默认B
  • async/await 会阻塞一个线程node.js

    When async await在node js函数中使用 它会阻塞node js线程直到它执行下一行代码吗 async await不会阻塞整个解释器 node js 仍然以单线程方式运行所有 Javascript 即使某些代码正在等待as
  • 使用 JRuby 或包执行时如何使用 rspec 启用颜色?

    我正在尝试使用 JRuby 运行我的 rspec rake spec 结果是 jruby S bundle exec rspec color spec foo spec rb 没有显示颜色 所以我从等式中删除了 Jruby bundle e
  • 如何在android中将json对象转换为字符串..?

    我想转换自JSONObject CNo 80 CName ganesh CMail email protected CMailType home CPhNo 9878987776 CPhNoType home ClientNo 1 to C
  • 如何在android ndk中使用GraphicBuffer

    我问这个问题是参考我的问题的答案如何提高android中opengl es的显示性能 我试图构建使用 GraphicBuffer 和 ndk r9d 的代码 但它说 GraphicBuffer 没有在此范围内声明 对于eglCreateIm