1

次の呼び出しを使用して、Android で ETC テクスチャを正常に作成およびロードできます。

ETC1Texture etc1tex = new ETC1Texture(...);
gl11.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, 0/*level*/, 
                             ETC1.ETC1_RGB8_OES/*internal format*/,  
                 etc1tex.getWidth(), etc1tex.getHeight(),        
                 0/*border*/,   
                 etc1tex.getData().capacity()/*imagesize*/, 
                 etc1tex.getData());        

しかし、このテクスチャを新しい画像データで更新する必要があります。SubImage への呼び出しを使用しています:

GL11.glCompressedTexSubImage2D( GL10.GL_TEXTURE_2D, 0/*level*/,                    
            0,   0,     etc1tex.getWidth(), etc1tex.getHeight(),        
            ETC1.ETC1_RGB8_OES, 
            etc1tex.getData().capacity(), 
            etc1tex.getData()); 

これは、前の呼び出しとほぼ同じパラメーターを取ります。しかし、それは機能していません。私のテクスチャは少しも変わりません。

しかし、SubImage 呼び出しを最初のものに単純に置き換えると、更新時にテクスチャに歪みが見られます...

この CompressedTexSubImage 呼び出しを使用する方法を知っている人はいますか

4

2 に答える 2

2

ええ、私は同じ問題に遭遇します。

私が使うglCompressedTexImage2D(texinfo.glTarget + face, level,glInternalFormat, pixelWidth, pixelHeight, 0,faceLodSize, data);

できます。

しかし、私が使用するとき

glCompressedTexImage2D(texinfo.glTarget + face, level,glInternalFormat, pixelWidth, pixelHeight, 0,faceLodSize, NULL);

その後

glCompressedTexSubImage2D(texinfo.glTarget + face, level, 0, 0, pixelWidth , pixelHeight , glInternalFormat,faceLodSize, data);

それは機能しません。

gl error is GL_INVALID_OPERATION

glCompressedTexSubImage2D1つのバッファではなく1つのテクスチャをロードするため、使用する必要があります。複数のタイル バッファにロードされる場合があります。1 つのタイルのロードが完了した場合は、glCompressedTexSubImage2Dそれを処理するために呼び出します。

于 2013-03-27T04:31:57.177 に答える
0

APIによると(https://www.khronos.org/opengles/sdk/1.1/docs/man/glCompressedTexSubImage2D.xml

「必要なパレット形式ではサブイメージの更新は許可されませんが、拡張機能によって定義された他の形式は可能です。」

これは、ETC1 圧縮の場合、サブイメージが許可されていないことを意味すると思います。

于 2014-07-24T17:52:48.610 に答える