問題タブ [mipmaps]
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.
performance - OpenGL で大きな画像 (MAX_TEXTURE_SIZE より大きい) からテクスチャを作成する方法
OpenGL がサポートできるテクスチャの最大サイズは 8192 ですが、使用している画像は 16997x15931 です。このリンクでわかるように、クラスCOpenGLControlを完成させ、それを自分用にカスタマイズして、7697x7309 の小さな画像を操作し、さまざまなナビゲーション タスクを有効にしました。
OpenGL で 2D テクスチャの上に輪郭を描かれた赤い四角形をレンダリングします。
作業の最終段階で、テクスチャを適用する部分を変更して、サイズ 8192 よりも大きな画像を処理できるようにすることにしました。
質問:
- 私のopenglで可能ですか?
- ミップマップ、複数のテクスチャリングについてどのような概念を勉強すればよいですか?
- コードのパフォーマンスを拡張しますか?
現在、私のプログラムはこの小さな画像 (7697x7309) を表示するためだけに 271 MB の RAM を使用しており、コードを最適化するために全力を尽くした (画像処理フィルタリング プロセス用の) タスクをそれに追加しますが、 (7697x7309) イメージに 376 MB の RAM を使用します (コンソール アプリケーションとしてこのプロジェクトに結合されるため、コードは既に記述されています)。したがって、最終的なプロジェクトでは、7000x7000 に近いサイズの画像に最大 700 MB の RAM を使用すると思います。明らかに、より大きな画像 (16997x15931) の場合、RAM の使用量はかなり高くなります!
だから私は MAX_TEXTURE_SIZE よりも大きな画像を処理し、プログラムのパフォーマンスを最適化するコンセプトを探しています
さらに質問を:
- 上記の目標を達成するために 、 OpenGLでどのような概念を学習する必要がありますか?
- あなたが提案するコンセプトについて少し説明してください。
ゲーム開発でも質問しましたが、ここで質問を繰り返すことにしました。視聴者が増えるかもしれません。回答が得られ次第、いずれかのサイトから質問を削除します。したがって、複数の質問について心配する必要はありません。
c# - ミップマッピングが間違った結果を生む
画像のミップマップを生成しようとしています。ピクセルは byte[] として格納され、形式は {r,g,b,a,r,g,b,a,r,g,b,a ... } です。
これがしようとしているのは、画像内の 4 つのピクセルの各グループを取得し、それらの 4 つのピクセルの平均を見つけて、それを新しい画像に入れることです。
サンプル テクスチャのすべてのミップマップを作成した結果は次のとおりです: http://imgur.com/KdEEzAw
独自のアルゴリズムを使用せず、directx などを使用せずにミップマップを作成する方法があれば (レンダリングにミップマップを使用しておらず、ファイルに保存しています)、それは良いことです。
javascript - 私のスプライトシート/アトラスは2の累乗でなければなりません
Atlases / Spritesheets を使用して Web ベースのゲームの接続オーバーヘッドを削減するのが一般的な方法です。また、2 のべき乗でスプライトを使用することについて読んだことがあります。これは、メモリとミップマッピングの両方に役立ちます (これがWeb ベースのゲーム)。
しかし、(ミップマッピングの) 同じ原則がアトラスに適用されますか? 基本的に、アトラスのサイズは 2 のべき乗である必要がありますか、それとも (2 のべき乗のルール) 含まれている個々の画像に適用する必要がありますか?
opengl - ミップマップ配列と詳細レベルの違いは何ですか?
textureQueryLod 呼び出しは、次の 2 つのコンポーネントを返します。
- x - 使用されるミップマップ レベルの比率を示します。
- y - 詳細レベル。
両方とも同じですか?
c# - SharpDX ツールキット (2.5) で MipMap を作成する方法
SharpDX-Toolkit を使用していますが、Texture2D で mimap を作成できません。コンテンツ マネージャーによってテクスチャをロードし、GenerateMipMaps() を呼び出そうとすると、NotSupportedException が発生します。
このテクスチャのミップマップを生成できません (RenderTarget と ShaderResource と MipLevels > 1 でなければなりません)
コード (Game-Class の LoadContent-Method 内):
どうすればいいのかわからないので、誰かがこの問題で私を助けてくれることを願っています。ありがとう。
c++ - OpenGL glGeneratemipmap と Framebuffers
私はその場でミップマップを生成し、このコードでこのビットを読むことに頭を悩ませています: http://www.g-truc.net/post-0256.html
私の質問:
glGenerateMipmap
テクスチャへのレンダリングの場合、2 回呼び出す必要があるのはなぜですか?- フレームごとにこのように呼び出す必要がありますか?
たとえば、ディフューズ 2D テクスチャをインポートする場合、次のように OpenGL にロードした後、一度だけ呼び出す必要があります。
テクスチャがフレームごとに再描画され、ミップマップ生成がそのコンテンツをプロセスで使用するためだと思われますが、これを確認したいと思います。
3 - また、gbuffer にレンダリングしてからすぐglBlitFramebuffer
にデフォルトの FBO にレンダリングする場合、バインドしてglGenerateMipmap
このようにする必要がありますか?