- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在开发基于自定义标准 C 库构建的 Android 应用程序的 iOS 端口,该库使用的似乎是 EGL、GLES、GLES2、OpenGL、OpenGL ES、OpenGL ES2。不幸的是,我没有使用上述技术的经验,尤其是与 EGL 和 OpenGL 有关的技术。我了解到EGL是OpenGL ES和底层原生平台窗口系统之间的接口(interface),并且iOS已经将EGL适配到EAGL以支持Cocoa的规则。
我找到的资源主要讨论 EGL 和 android,但并没有特别提到 EGL 与 C 和 iOS 的集成,但其中很多都回到了 obj-C 和 EAGL。
下面是我正在处理的一些示例代码,不幸的是很多 EGL 引用是未定义的,我试图在这里使用这个库(https://github.com/davidandreoletti/libegl)来填补空白,但显然有许多引用仍然未定义,例如 eglChooseConfig、eglGetDisplay、eglinitialize。
//GraphicsDisplay.h
#include <EGL/egl.h>
#include <GLES/gl.h>
#include <GLES2/gl2.h>
#include <OpenGLES/ES2/gl.h>
#include <GLES2/gl2ext.h>
...
static EGLDisplay eglDisplay
static EGLSurface eglSurface
static EGLContext eglContext
//GraphicsDisplay.c
#include "GraphicsDisplay.h"
STATUS_CODE getScreenSize(UNIT16 *width, UNIT16 *height) {
EGLint displayWidth;
EGLint displayHeight;
//check if there's a screen
if(eglDisplay == EGL_NO_DISPLAY && eglSurface == EGL_NO_SURFACE) {
return OK;
}
if(eglQuerySurface(eglDisplay, eglSurface, EGL_WIDTH, displayWidth) == EGL_FALSE) {
return FAIL;
}
*width = (UNIT16)displayWidth;
if(eglQuerySurface(eglDisplay, eglSurface, EGL_HEIGHT, displayHeight) == EGL_FALSE) {
return FAIL;
}
*height = (UNIT16)displayHeight;
return OK;
}
STATUS_CODE EGLInitialize() {
EGLint format;
EGLint numconfigs;
EGLConfig config;
EGLint attribs[] = { EGL_BLUE_SIZE, 4, EGL_GREEN_SIZE, 4, EGL_RED_SIZE, 4, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_NONE };
EGLint attribList[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(eglDisplay, 0, 0);
eglChooseConfig(eglDisplay, attribs, &config, 1 &numConfigs);
eglGetConfigAttrib(eglDisplay, config, EGL_NATIVE_VISUAL_ID, &format);
... etc...
}
对此的任何见解都会有所帮助。
代码示例将是最全面和最受赞赏的。
谢谢
最佳答案
我认为简短的回答是“你不能”——EAGL 是类似 EGL 功能的 iOS 版本,所以你必须移植到 iOS 上使用 EAGL。
网上有很多 iOS EAGL + OpenGL ES 教程,可以教你如何开始使用 EAGL API;它不够简单,不足以保证在这里尝试回答。
关于android - 如何将 EGL(不是 EGAL)与 iOS(C 和 Obj-C)集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621546/
我已经编译了 SDL 2.0 源代码。 首先,我在控制台上推荐了 'cmake ../-G "MinGW Makefiles"。 其次,我赞扬了“制造”。但发生错误。 fatal error: EGL
我正在用 opengl 和 java/android 做一些工作。我在 C++ 中有一些代码,并且正在使用 JNI 在两者之间进行交互。我得到结果: D/App ( 2966): eglGet
我正在尝试通过指定 eglfs 平台在没有 X Server 的情况下运行 hellogl_es2 Qt 示例: ./hellogl_es2 -platform eglfs EGL Error : C
版本情况如下 CUDA版本:10.2 tensorrt版本:8.0.1.6 JetPack版本:32.6.1 deepstream版本:6.0 官网的系统版本适配图如下: 通过对比发现:我的版本是没有
我想实现一个生成图像的opengl应用程序,并通过网页查看图像。 该应用程序旨在运行在没有显示器、没有 x 窗口但具有 gpu 的 linux 服务器上。 我知道 egl 可以使用 pixmap 或
考虑到上下文句柄从 main() 传递给线程的函数,是否允许从 main() 创建 egl 上下文并从另一个线程渲染? 最佳答案 是的,肯定是。 首先,您需要在一个线程中创建一个上下文: EGL
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
我正在尝试在 Ubuntu Trusty 系统上使用 g++ 4.9.1 链接一个非常简单的 GLES2 和 EGL 程序。我正在使用台面库。 我收到 EGL 函数的链接器错误: test.cpp:(
EGL 看起来是有史以来记录最差的 Khronos 项目,我确实找不到关于这个项目的任何具体信息,但它看起来很有希望,最后有一个标准化的 GLUT/FreeGlut 替代方案。 我的观点是,假设我想要
我有一个包含两个 Activity 的 Android 项目。一个是我的主要 Activity ,使用从 native 代码更新的 GLSurfaceView。另一个是 PurchaseActivit
setPreserveEGLContextOnPause Android 函数的文档说明如下: “...如果设置为 true,那么当 GLSurfaceView 暂停时,EGL 上下文可能会被保留..
对于那些处理过 EGL(精英游戏阶梯)锦标赛和阶梯脚本的人...我在弄清楚如何为我制作的自定义模组添加新的组权限时遇到了问题。我创建了一种新型的“一般规则”模组,我想存储权限,如下所示: case "
我在少数设备上遇到以下崩溃,代码在少数设备上运行良好。我不明白是哪部分代码造成了这次崩溃。几天前它工作正常,突然间我看到了这次崩溃。谁能告诉我是什么导致了这次崩溃。请帮助我 堆栈轨迹如下: java.
看起来 EGL 将成为将“GUI 窗口”连接到图形服务器的下一个最流行的标准,我的问题是:有一个 GUI 框架,可能是在 C++ 中,它能够在EGL 的顶部? 出于不同的原因,我将 GTK、QT、Wx
目前我转换 eglGetError() 结果的函数如下所示: std::string eglErrorString(EGLint error) { switch(error) {
我在 Cloudbees 上设置了一个 Jenkins Job,我可以在那里成功地 checkout 和编译我的 Android 项目。现在我想在 android 模拟器中运行一些 JUnit 测试并
在 OpenGL ES 中,我可以使用扩展名为 GL_EXT_sRGB 的 OpenGL ES 3.0 或 OpenGL ES 2.0 创建 sRGB 渲染缓冲区。我创建了一个内部格式为 GL_SRG
任何人都可以向我解释什么是 EGL 以及它的作用吗? 我如何在 Linux 上将 EGL 与 OpenGL-ES 结合使用? EGL 是硬件和操作系统之间的一层吗? 最佳答案 EGL是独立于窗口系统的
此代码在没有抗锯齿 (samples=0) 时呈现彩色三角形。但是,当我打开抗锯齿 (samples=1...32) 时,它无法呈现任何内容。如何使其与抗锯齿一起使用?也许我无法直接从多重采样 fbo
我正在尝试对我正在解决的问题进行服务器端渲染。 EGL 提供了一种无需窗口系统即可定义 OpenGL 上下文的方法。我已经能够在笔记本电脑上使用 EGL 成功地离屏渲染,但是当我尝试在 digital
我是一名优秀的程序员,十分优秀!