1

DDS ファイルを読み取ってゲーム内のテクスチャを更新する Unity 用の外部プラグインに取り組んでいます。これまでのところ、DDS ファイルを DX11 と DX9 にロードすることができましたが、OpenGL を動作させることができないようです。

opengl 用の nvidia グラフィックス sdk 10 を使用して DDS ファイルを読み取り、GLUT/GLEW を使用してテクスチャを更新していますが、ゲーム内でテクスチャが更新されません。12 のミップマップで 2048x2048 DXT1 テクスチャを読み込もうとしています。

これが私のコードです:

// 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の経験があまりないので、何かが足りないかもしれません。さらに情報が必要な場合は、お知らせください。

4

0 に答える 0