- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Android NDK 制作一个 OpenGLES Android 应用程序,从 android 的 gljni 示例扩展,可以找到 here
它正在使用 GLSurfaceView。纹理在从 GLSurfaceView.Renderer 的 onSurfaceChanged() 调用的 JNI 函数中初始化
当用户触摸屏幕时,应用需要更多纹理。为此,在 onTouchEvent() 中调用的 JNI 函数中调用了 glGenTextures()。
问题是线程 ID(gettid() 返回)似乎完全是任意的,并不总是与具有 OpenGL 上下文的线程 ID 相同。
如果在同一线程中调用 JNI 函数,它会加载并显示纹理,但如果在另一个线程中调用,则会失败。所以它的行为非常随机。
我可以做类似的事情吗:
共享 OpenGL 上下文,以便我可以在任何线程上成功调用 glGenTextures()。
使 onTouchEvent() 仅在一个具有 OpenGl 上下文的线程中调用
或者任何我可以让它工作的东西
?
谢谢
最佳答案
这不是随机行为,而是 OpenGL 与线程交互的方式。上下文仅在一个线程上有效,其他线程没有 GL 上下文,除非您专门为要与 OpenGL 一起使用的每个线程创建一个上下文。没有上下文,所有 GL 调用都会失败。
关于android - 无法在多线程 Android 应用程序上调用 glGenTextures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527878/
简单的问题:当我调用 glGenTextures(0, someptr); 时会发生什么? ,生成零纹理?我有一个函数可以根据参数给出的数字生成纹理,该数字可能为 0。我在 OpenGL 引用页面、G
我将 OpenGL ES 1.1 与 NDK 一起使用,偶尔当我打电话时 glGenTextures它不会更改我传入的名称持有者的值(甚至没有将其设置为 0)。 glGetError返回0,没有错误。
可以在 OpenGL 中创建的纹理数量是否有限制 - 即使用 glGenTextures? 我知道 GL 施加了一些限制,例如。可以在片段着色器中使用的纹理数量。但是,我一直无法找到有关可用整数“纹理
我需要在 OpenGL ES 的后台线程中加载纹理。但在后台线程中调用时,glGenTextures 始终返回零。 -(void) someMethodInMainThread { [self
在 C 中我会执行以下操作: GLuint a; glGenTextures(1, &a); Haskell 中 glGenTextures 的类型是: GLsizei -> Ptr GLuint -
我正在学习 OpenGL,最近发现了 glGenTextures。尽管有几个网站解释了它的作用,但我不得不想知道它在速度,特别是内存方面的表现如何。 调用 glGenTextures 时我到底应该考虑
我有一个名为 Texture 的类。此类负责管理纹理。在程序启动中,OpenGL 上下文被正确初始化(这就是使这个问题不同于大多数涉及意外 glGenTextures 行为的问题)。 Texture
这听起来很简单,但我查看了各种网站,它只给了我两个参数: void glGenTextures(GLsizei n, GLuint * textures) .. 有解释。 然而,当在 Android
我在 iOS 6.1.4、OpenGL ES 2 上,遇到 glGenTextures 返回纹理“名称”的奇怪行为,这些名称以前由 glGenTextures 返回。 具体来说,在初始化时,我遍历我的
我之前已经将纹理加载到 openGL 中,效果很好。但是这次我想在渲染类的构造函数中加载纹理。 (我使用带有抽象基类作为接口(interface)的 MVC)。我最初试图加载一个 png 文件而不是像
问题来了:当我调用 glGenTextures 时出现段错误。 我在 linux 上,这是我目前用来调查这个的代码: #include #include #include #include i
首先,我对 C/C++ 知之甚少,因此我的知识中可能存在一个黑点,但我目前正在尝试将 OpenGL 的一些功能移植到 AS3 并查看 glGenTextures() 方法OpenGL的 http://
我一直在尝试创建一个可以打开窗口并能够显示图像的程序(我想制作一个游戏)。由于我之前在 C++ 中使用过 OGL,所以这次我决定学习一些 Java 并获得 LWJGL。我在官方教程的帮助下设置了窗口,
我正在尝试生成这样的纹理: #define checkImageWidth 64 #define checkImageHeight 64 static GLubyte checkImage[check
谁能告诉我为什么 glGenTextures() 在我的构造函数中不起作用? 这是我的项目的设置方式: 使用自定义渲染器在当前 Activity 舞台上调用 .draw。 创建阶段时,它会将自身(其构
我有这个问题: Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 Type "help", "copyrig
我遇到了一个奇怪的问题,我以未定义但不知何故有效的纹理结尾。应用此纹理的网格是黑色的。此纹理的 glIsTexture(textureId) 方法返回 1 (!) 但纹理显然是错误的。它具有未定义的大
我在 android 中使用 FBO 实现渲染到纹理,作为我创建纹理的第一步,但我通过调用 GLES20.glGenTextures 方法得到错误 1280。 Texture Creator 函数如下
使用 SDL2 和 SDL2_image 尝试一些 C++ 和 OpenGL,基于 http://open.gl 一旦到达 glGenTextures 调用,我就会收到主题错误。我的大部分搜索都提到尚
我正在学习一个处理纹理加载的教程,里面有这个方法: void CTexture::CreateEmptyTexture(int a_iWidth, int a_iHeight, GLenum form
我是一名优秀的程序员,十分优秀!