2017-01-14 10 views
0

GL_OES_texture_compression_astc拡張機能をサポートするデバイスでOpenGL ESアプリケーションを実行しています。 3000x2000ピクセルのテクスチャがあります。glTexImage2Dを呼び出すと、すべて正常に動作します。 glCompressedTexImage2Dによるセグメンテーションフォールト

私は ASTC encoderをダウンロードして、次のコマンドを実行し、画像を圧縮するには:

./astcenc.exe -c player.png player.astc 6x5 -medium

をしかし、私はglCompressedTexImage2Dでplayer.astcを使用する場合、関数はセグメンテーションフォールトが発生します。ここに私のコードは次のとおりです。

glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, tids[0]); glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ASTC_6x5_KHR, 3000, 2000, 0, size, data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, 0);

私はsizedataをチェックしました、そして、彼らは罰金のように見えます。問題を解決するために何かできることはありますか?

+0

は、それが問題になりそうです。だからあなたはどんな大きさの価値を持っていますか? – solidpixel

+0

アルゴリズムの理解に基づいて、圧縮サイズは(3000/6)*(2000/5)* 16 = 3200000にする必要があります。圧縮ファイルのサイズは3200016バイトです。ファイルサイズを圧縮イメージのサイズとして使うことができたと私は思ったが、私は間違っていた。ちょうど3200000に設定する必要があります。それは少しイライラしています。 – user934904

+0

Yep - コンプレッサーはメタデータのヘッダーを追加するので、それをノックアウトする必要があると思います。 – solidpixel

答えて

関連する問題