問題タブ [glteximage2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
214 参照

c++ - C++ を使用した OpenGL: クラス配列を glTexImage2d に渡すときの vtable の問題

Colorfloat r、float g、float b、float alphaでクラスを作りました。仮想デストラクタを持つ基本クラスがあります。

私は色の配列をopengl関数に渡そうとしています.float型glTexImage2DGL_RGBA編成です(これは{float r、float g、float b、float alpha}の配列になります)。これにはColor、4 つの float (サイズ 16 バイト) のみを含める必要があります。

ただし、デストラクタのおかげで、 vtableを持つ基本クラスのために、クラスのサイズが 20 バイトでsizeof(Color)あることがわかります。Color

vtable を保持したまま Color 配列を に渡すにはどうすればよいglTexImage2Dですか?

0 投票する
1 に答える
5104 参照

opengl - glBindImageTexture() と glBindTexture() の違いは何ですか?

glBindImageTexture と glBindTexture の違いは何ですか? また、シェーダーでの次の宣言の違いは何ですか:

0 投票する
1 に答える
1368 参照

c++ - OpenGL ES 3.1 - glTexImage2D で不変のテクスチャを作成できない

glTexImage2D()私はそれを使用してバインドできる不変のテクスチャを作成しようとしていますglBindImageTexture()

ここに私のC++コードがあります:

Mipmap レベルは必要ないので、 に設定GL_TEXTURE_MAX_LEVEL0ます。次に、すべてのテクスチャのレベル (ここでは 1 つだけ) をセットアップするため
に呼び出しますが、エラーは発生しません。glTexImage2D()

残念ながら、の結果は
glGetTexParameteriv(GL_TEXTURE_2D,GL_TEXTURE_IMMUTABLE_FORMAT,&status)0テクスチャがimmutableではないことを意味します。

を呼び出そうとするとglBindImageTexture()、エラー1282が発生します。これは、クロノスのドキュメントに書かれているように、この opengl 関数には不変のテクスチャが必要なためです。

私が間違っていることについてのアイデアはありますか?

前もって感謝します ;)

編集 :

お二人ともお時間を割いて情報を提供していただきありがとうございますが、わからないことがあります。

男性のこの段落glTexStorage2D()khronos documentation)は私を混乱させます:

glTexStorage2D の動作は、ターゲット パラメータによって異なります。ターゲットが GL_TEXTURE_2D の場合、glTexStorage2D を呼び出すことは、エラーが生成されないと仮定すると、次の疑似コードを実行することと同じです。

実際にはテクスチャ データが提供されないため、pseudo-codefor のフォーマットとタイプで使用される値は無関係であり、選択された internalformat 列挙子に有効な任意の値と見なされる場合があります。internalformat は、表 1 に示されているサイズの内部形式のいずれか、または以下の表 2 に示されている圧縮された内部形式のいずれかでなければなりません。成功すると、 の値は次のようにGL_TEXTURE_IMMUTABLE_FORMATなります。GL_TRUE. GL_TEXTURE_IMMUTABLE_FORMAT の値は、pname を GL_TEXTURE_IMMUTABLE_FORMAT に設定して glGetTexParameter を呼び出すことによって検出できます。テクスチャ オブジェクトの寸法や形式をこれ以上変更することはできません。テクスチャ オブジェクトの寸法やフォーマットを変更する可能性のあるコマンド (glTexImage2D や glTexStorage2D への別の呼び出しなど) を使用すると、実際には寸法やフォーマットを変更しない場合でも、GL_INVALID_OPERATION エラーが生成されます。物体。

上記の段落が についてなのglTexImage2D()glTexStorage2D()

さらに、私の根底にある質問は次のとおりです。使用して作成されたテクスチャをバインドできますか? glTexImage2D()glBindImageTexture()(たとえば 、これら 2 つの関数が実際に一緒に使用されているコード サンプルを見ました)

0 投票する
1 に答える
209 参照

ios - iOS で gl テクスチャ サンプラーが常に vec4(0.,0.,0.,1.) を返す (ただし、OSX/Android では機能する)

人工的なデータをテクスチャにアップロードするだけのコードがあります。

そして、シェーダーでそのテクスチャからサンプリングするだけのコード:

OSX と Android では、このテクスチャは私のシェーダーで読み取ることができます (sampler2D を介して - 派手なものはありません) - 動作します。iOS では、その sampler2D からのサンプルはvec4(0.,0.,0.,1.)、入力されたデータに関係なく を返します。

( に変更GL_ALPHAするGL_RGBAと、テクスチャをフレームバッファにアタッチし、プラットフォームに関係なく、入力した正確なデータが返された後に呼び出しglReadPixels機能glTexImage2D(または iOS での欠如) は同じままであることに注意してください。に必要なフレームバッファにアタッチするためだけに必要でした.これは、デバッグ目的でのみ気にします.tl;dr:データがすべてのプラットフォームでテクスチャに正しくアップロードされていることをかなり確信しています.)GL_RGBAglReadPixels

他の情報:

gl_sim_texture_active_nは 6 で、gl_sim_texture_buff_id14 です (どちらも正当に取得され、エラーなしで取得されます)。glGetError()orglCheckFramebufferStatus(GL_FRAMEBUFFER)の前または後に両方を呼び出すと、クリーンが返されます。glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS)8 を返します (テスト用の Android デバイスと同じです。

これがiOSではなくOSX/Androidで機能する理由がまったくわかりません。ここからどこへ行くべきかについての方向性は役に立ちます!

0 投票する
1 に答える
856 参照

opengl - OpenGL は整数ピクセル データを浮動小数点または UNORM に変換できますか?

glTexImage2DinternalFormat(ビット数とデータ型/エンコーディングを指定)、(formatビット数とエンコーディングなし) とtype.

たとえば、OpenGL が 32 ビット整数を含む渡されたピクセル データを形式GL_RGB_INTEGERと型GL_INTから内部形式に変換できるようにすることは可能ですGL_RGB32Fか?

ウィキの記事https://www.khronos.org/opengl/wiki/Pixel_Transfer#Format_conversionは、次のように述べることで可能であることを示唆しています。

ユーザーが指定したピクセルは、ユーザーが指定した形式 (形式と型を使用) と、画像の画像形式によって制御される内部表現との間で変換する必要があります。

しかし、シェーダーで浮動小数点サンプラーから読み取ることができませんでした。