EGL ERROR: "ресурс текстуры равен NULL, уровень не указан" - PullRequest
0 голосов
/ 14 апреля 2019

Я получаю ошибку EGL: EGL ERROR: type = 0x824c, серьезность = 0x9146, message = "ресурс текстуры равен NULL, уровень не указан"

Эта ошибка появляется при выполнении glTextSubImage для texId1 в первом3 строки кода ниже.Нет ошибок на texId2.Хотите знать, есть ли у кого-нибудь еще идеи о том, что это за ошибка?

Эта ошибка видна в debugMessagecallback, а связанный glGetError () - GL_INVALID_OPERATION.

   //render loop
   glBindTexture(GL_TEXTURE_2D, (GLuint)texId1);
   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, g_textureWidth,    g_textureHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixelsdata1);

   glBindTexture(GL_TEXTURE_2D, 0); //unbind tex


   glBindTexture(GL_TEXTURE_2D, (GLuint)texId2);
   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, g_textureWidth,      g_textureHeight, GL_RGBA, GL_UNSIGNED_BYTE, pixelsdata2);

   glBindTexture(GL_TEXTURE_2D, 0); //unbind tex

1 Ответ

0 голосов
/ 16 апреля 2019

Хорошо, вот что случилось, и, таким образом, выбрав это как ответ на этот пост.Код единства, в котором я создал текстуры, я также попытался установить по умолчанию в белый цвет.Я сделал это, назначив m_tex = Texture2D.whiteTexture.Намерение было сделать что-то вроде m_tex.whiteTexture;что недопустимо, поэтому оказалось, что я сделал: -)

Под капотом похоже, что Unity использует вызов glTexStorage2D () для Texture2D.whiteTexture, который я случайно создал заново, что делает его неизменным.Сам факт того, что мне пришлось изменить размер моего оригинального текста, должен был сделать для меня очевидным, что я получил новую текстуру вместо смены цвета, но так много для моего внимания к интерпретации вызовов gl и кодов ошибок в моем родном коде.После комментирования этого whiteTexture и изменения размера больше нет ошибок gl:

m_tex = new Texture2D(1920, 1080, TextureFormat.RGBA32, false);
m_tex.filterMode = FilterMode.Bilinear;

//m_tex = Texture2D.whiteTexture;
//m_tex.Resize(1920, 1080);
m_tex.Apply();

Еще одно примечание. Я продолжаю использовать только вызов glTexSubImage2D с пиксельными данными, передаваемыми в том же вызове, что и в предыдущем посте выше.Я не использую glTexImage.Я предполагаю, что Unity использует ARB_texture_storage extension для всех текстур, таким образом делая эти текстуры неизменяемыми.Вот примечание от расширения:

When using this extension, it is no longer possible to supply texture
data using TexImage*. Instead, data can be uploaded using TexSubImage*,
or produced by other means (such as render-to-texture, mipmap generation,
or rendering to a sibling EGLImage).

ThankYou @ Rabbid76 и @solidpixel.Я уверен, что все комментарии будут полезны для других.Приветствия: -)

...