Обновление текстур в OpenGL

Я работаю над внешним плагином для Unity, который обновляет текстуры в игре, читая файлы DDS. До сих пор мне удавалось загружать файлы DDS в DX11 и DX9, но я не могу заставить OpenGL работать.

Я использую nvidia graphics sdk 10 для opengl для чтения файлов DDS и GLUT / GLEW для обновления текстуры, но текстура не будет обновляться в игре. Я пытаюсь прочитать текстуру DXT1 размером 2048×2048 с 12 мипмапами.

Вот мой код:

// Initialize glut/glew
glutCreateWindow("");
char *args[] = {0};
glutInit(0, args);
GLenum err = glewInit();
if (GLEW_OK != err)
{
char message[64];
sprintf_s(message, "Error: %s", glewGetErrorString(err));
DebugLog(message);
}

// Load the DDS file
nv::Image texture;
if (!texture.loadImageFromFile("image.dds"))
DebugLog("Failed to load DDS texture");

// Update the texture
GLuint gltex = (GLuint)(g_TexturePointer); // g_TexturePointer is a pointer to the texture that is passed from Unity
//glGenTextures(1, &gltex);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gltex);
for (int i = 0; i < texture.getMipLevels(); i++)
{
glCompressedTexImage2DARB(GL_TEXTURE_2D, i, texture.getInternalFormat(), texture.getWidth(), texture.getHeight(), 0, texture.getImageSize(i), texture.getLevel(i));
}

Я не очень опытен с OpenGL, так что, может быть, я что-то упустил. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]