如何在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 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