我遇到了一個問題,即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上下文線程上運行的。