gpt4 book ai didi

java - 为什么 glGenTextures 在 OpenGL 上下文线程 (Android) 上返回零?

转载 作者:行者123 更新时间:2023-12-01 22:22:56 25 4
gpt4 key购买 nike

我遇到一个问题,即 GLES20.glGenTextures() 返回纹理名称为零,即使在原始线程(即 OpenGL 上下文线程)上运行也是如此。

当我运行代码时

final Handler handlerForOriginalThread = new Handler(activity.getMainLooper());

final int[] textureHandleA = new int[1];
GLES20.glGenTextures(1, textureHandleA, 0);
Log.v(TAG, "textureHandle (A): " + textureHandleA[0]);

new Thread(new Runnable()
{
public void run()
{
//[Prepare bitmap here]

handlerForOriginalThread.post(new Runnable()
{
public void run()
{
final int[] textureHandle = new int[1];
GLES20.glGenTextures(1, textureHandle, 0);
Log.v(TAG, "textureHandle (B): " + textureHandle[0]);

//[Load bitmap to texture here]
}
});
}
}).start();

glGenTextures 返回 (A) 的有效名称和 (B) 的零。

为什么会出现这种情况?

这类似于 glGenTextures returns zero in background thread ,但在这种情况下,代码实际上是在 OpenGL 上下文线程上运行。

最佳答案

我明白了。事实证明,“原始线程”与我的 Activity 的主循环程序不同。

long origThreadID = Thread.currentThread().getId();
Log.d(TAG, "origThreadID (A): " + origThreadID);
final Handler handlerForOriginalThread = new Handler(activity.getMainLooper());

new Thread(new Runnable()
{
public void run()
{

handlerForOriginalThread.post(new Runnable()
{
public void run()
{
long origThreadID = Thread.currentThread().getId();
Log.d(TAG, "origThreadID (B): " + origThreadID);
}
});
}
}).start();

结果

origThreadID (A): 9467
origThreadID (B): 1

关于java - 为什么 glGenTextures 在 OpenGL 上下文线程 (Android) 上返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com