我遇到了一个问题,即GLES20.glGenTextures()对于纹理名称返回零,即使在原始线程(这是OpenGL上下文线程)上运行时也是如此。为什么glGenTextures在OpenGL上下文线程(Android)上返回零?
当我运行代码
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上下文线程上运行的。