問題タブ [textures]
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.
iphone - PVRテクスチャ圧縮タイリング(エッジコンテキストの公開)
私のiPhoneゲームではPVRテクスチャ圧縮がすべてうまく機能していますが、複数のテクスチャを一緒にタイリングすると問題が発生します。基本的に、私は非常に大きな背景を持っており、それは複数の512x512タイルに分割され、すべてPVRが圧縮されています。次に、それらは1つの大きな背景画像のように一緒に描画されます。PVRの動作方法。これは、テクスチャが本当に大きなテクスチャであるかのように圧縮されていることを認識していないためです。つまり、ネイバーのタイル情報を使用して、PVR圧縮の実行方法を決定します。
これを行うには、おそらくいくつかの方法が考えられます。
1)どういうわけか、隣接する他の画像に対応するように、texturetoolコマンドラインプログラムに指示します。
2)コマンドラインプログラムを使用して、画像全体を表す巨大なPVRテクスチャを生成し、バイトを複数の画像に分割します。おそらく不可能です。
3)エッジをうまくブレンドするようなOpenGLESトリッキーを実行します。
4)各タイルに冗長な情報がある場合は注意が必要です。次に、テクスチャが描画されるときにそれらの領域をクリップします(いいえ)。
うまくいけば、私は1、2、または3を実行できます。あるいは、他のよく知られた解決策があります。
iphone - iPhone OpenGL ES Texture2D マスキング
ColorSplash や iSteam などの他のアプリのようなテクスチャをマスクしようとするときの最良の選択は何ですか?
私はOPENGL ESのようなものを学び始めました... 4日前(私は完全な新人です)、次のアプローチを試しました:
1) 色付きの texture2D、最初のテクスチャのグレースケール バージョン、および mask と呼ばれる 3 番目の texture2D を作成しました。
2) ブラシ用の texture2D も作成しました...これはグレースケールで不透明です (ブラシ = 黒 = 0,0,0,1 および周囲 = 白 = 1,1,1,1)。私の意図は、エッジが滑らかなアンチエイリアスブラシを作成することでしたが、今は通常のブラシで問題ありません
3) インターネットでマスキング手法を検索したところ、このチュートリアル ZeusCMD - 設計と開発のチュートリアル : OpenGL ES プログラミング チュートリアル - マスキングに関するマスキング が見つかりました。チュートリアルでは、ブレンディングを使用してマスキングを行うように指示されています...最初に色を描画し、次にglBlendFunc(GL_DST_COLOR, GL_ZERO)でマスクし、次にglBlendFunc(GL_ONE, GL_ONE)でグレースケールします...これにより、私が望むものに近いものが得られます。 ..しかし、まさに私が欲しいものではありません。結果はマスクされていますが、何とか明るすぎます
4) マスク テクスチャに描画するために、追加のフレーム バッファ オブジェクト (FBO) を使用しました。
結果として得られる画像 (明るすぎた画像) にも、この方法で達成される速度にも満足できません。通常の方法は、グレースケール (オーバーレイ) texture2D に直接描画し、ブラシが当たる場所のアルファ チャネルのみに影響を与えることだったと思います。これを達成するための速い方法はありますか?私はたくさん検索しましたが、明確で理解しやすい答えは得られませんでした。次に、メインの描画ループで、色付きのテクスチャのみを描画し、その上にグレースケールを glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) とブレンドすることができました。
私はただ OPENGL ES の使い方を学びたいのですが、適切に動作させることができないので、気が狂ってしまいます。アドバイス、チュートリアルへのリンクをいただければ幸いです。
language-agnostic - 巨大な領域のテクスチャ?
これは、特定の言語に関係のない非常に一般的な質問です。私はこのintの配列を持っています:
これにはタイル番号のみが含まれ、256x256 タイルとしてレンダリングされます。つまり、基本的には単なるタイル マップか、何と呼ばれるかです。問題は、どこにでもマップに何かを書き込めるようにしたいということです。たとえば、草、花、石などの地面にあるものにペイントして、レンダリングするたびにこれらの各スプライトを何度もレンダリングすることなく、地形をより変化に富んだものにすることができます。しかし、各タイルに書き込む独自のテクスチャを含めると、256x256x100x100 = 655360000 ピクセルのメモリを大量に消費します。それはギガバイトのデータか何かのようなものではないでしょうか!?
あまりにも多くのメモリを消費することなく、私がやろうとしていることを作るための良い一般的な方法を知っている人はいますか?
私が HGE (Haaf's Game Engine) で C++ を使用していると誰かが不思議に思うかもしれません。
編集:レンダリングできるように、画面上のものの量を制限することにしました。しかし、ここを見て、私が達成しようとしていることを理解できるかもしれません: 画像タグの使用が許可されていないため、画像へのリンク :(
opengl - OpenGLテクスチャアーティファクトの削除
私は明らかにいくつかの3Dオブジェクトとテクスチャを含む単純なopenglアプリケーションを作成しています。ただし、私の問題は、すべてのテクスチャにアーティファクトが表示されることです。これらは、エッジに沿って三角形の形で提供されます。
視点をテクスチャに近づけるとすぐに消えてしまうことに気づきました。したがって、mipmappingまたはz-bufferのいずれかと関係があるのではないかと疑っています。すべてのテクスチャ座標は.3dsファイルからロードされ、すべてが0-1の範囲内にあることが確認されていることに注意してください。
これが私の問題の写真です:
テクスチャは次のようにロードされます。
opengl - 透明なテクスチャをレンダリングする
透明な部分がいくつかあるテクスチャが 1 つあります。面が不透明なマテリアル (または単純な場合は色) であるオブジェクトに適用したいのですが、最終的なオブジェクトは透明になります。最終オブジェクトを完全に不透明にしたい。
これが私のコードです:
まず、マテリアルを設定します。
次に、VBO をセットアップします。
そして最後にオブジェクトを描画します
glBlendFunc() にさまざまな引数を渡そうとしましたが、優勢ではありませんでした。ここにソースをアップロードしました: http://dpaste.com/83559/
更新 これを取得しますが、 これが必要です (またはテクスチャなしでこれが必要です)。
2枚目と3枚目はglmで作成したものです。ソースを調べましたが、OpenGL に関する知識が限られているため、あまり理解できませんでした。
c++ - タイリング シンプレックス ノイズ?
私は (愛好家として) 疑似乱数ノイズの生成、特にパーリンおよびシンプレックス アルゴリズムに興味を持っています。シンプレックスの利点は速度です (特に高次元で) が、パーリンは比較的簡単にタイルを張ることができます。誰かがタイリング シンプレックス アルゴリズムを知っているかどうか疑問に思っていましたか? 固定次元で問題ありませんが、ジェネリックの方が優れています。擬似コードは問題ありませんが、c/c++ の方が優れています。
opengl - OpenGL: 2 で割り切れない場合にテクスチャが歪む
表示に OpenGL を使用するゲーム エンジンがあります。そのための小さなメニューをコーディングしましたが、テキストをレンダリングした後、奇妙なことに気付きました。 http://img43.imageshack.us/i/garbagen.png/
ご覧のとおり、フォントはやや判読不能ですが、下部 ("Tests" など) は意図したとおりに見えます。端が切れるので、画面上の位置が読みやすさに影響するようです。フォントは 9x5 で、この値を 2 で割って幅/高さを取得し、オブジェクトを中央からレンダリングします。したがって、4.5x2.5 ピクセル (単純な長方形の x、y、幅、高さに float を使用) では、x.5 など以外の場所でレンダリングすると、テクスチャが台無しになります。ただし、今のところ2台のコンピューターでしかそうしていませんが、テキストが読めなくなるため、このエラーが発生するのは望ましくありません。私はそれを 4.55x2.55 にすることができ (2 で割るときに少し余分なサイズを追加することによって)、すべてのマシンで適切にレンダリングされます (または、少なくとも問題のある 2 つのマシンではそれほど頻繁には発生しません)。それを維持するにはあまりにもひどいハックであり、問題を完全に解決するわけではありません。そして、テキストを拡大してフォントを「太く」見せる可能性があります。だから私の質問は...これを防ぐことができ、それらの値を整数に交換しない方法はありますか? (フロートが比較して提供するわずかな違いが必要です)。どの幅/高さが 2 で割り切れるか、そうでないものは別の方法で処理できるかを調べることはできますか? 本当にビデオカードの問題である場合、それを回避することは可能でしょうか? 質問に欠けているものがある場合は申し訳ありません。私はインターネットで頻繁に質問することはありませんし、コーディングの研究もしていません。必要な行またはコードのチャンクを喜んで提供します。それらの値を整数に交換しませんか?(フロートが比較して提供するわずかな違いが必要です)。どの幅/高さが 2 で割り切れるか、そうでないものは別の方法で処理できるかを調べることはできますか? 本当にビデオカードの問題である場合、それを回避することは可能でしょうか? 質問に欠けているものがある場合は申し訳ありません。私はインターネットで頻繁に質問することはありませんし、コーディングの研究もしていません。必要な行またはコードのチャンクを喜んで提供します。それらの値を整数に交換しませんか?(フロートが比較して提供するわずかな違いが必要です)。どの幅/高さが 2 で割り切れるか、そうでないものは別の方法で処理できるかを調べることはできますか? 本当にビデオカードの問題である場合、それを回避することは可能でしょうか? 質問に欠けているものがある場合は申し訳ありません。私はインターネットで頻繁に質問することはありませんし、コーディングの研究もしていません。必要な行またはコードのチャンクを喜んで提供します。
opengl - OpenGL テクスチャの明るさを変更する
OpenGL レンダリングで使用されるテクスチャの輝度を上げたいと考えています。鮮やかな赤や白にするなど。これは 2D レンダリング環境で、すべてのスプライトがテクスチャとして OpenGL ポリゴンにマップされます。私はデータの操作についてほとんど何も知りません。私のエンジンはテクスチャ キャッシュで動作するため、サーフェス全体を変更すると、テクスチャを使用するすべてに影響します。「マスク」を使用してオーバーレイすることで効果をシミュレートできます。これにより、単色のスプライトを作成できますが、メモリが奪われます。これに対する他の解決策があれば?
c++ - UIImageパラメータを受け入れるCメソッドを取得するには?
Apple の GLImageProcessing サンプルの EAGLView コードを使用して、UIImage で画像処理を実行しようとしています。サンプルコードは、プリインストールされた画像 (Image.png) に対して処理を実行するように構成されています。選択した UIImage (または少なくとも CGImage データ) を受け入れ、代わりにそれを処理するように、コードを変更しようとしています。問題は、テクスチャ ローダー メソッドloadTexture() (下記) がパラメーターとして C 構造のみを受け入れるようで、UIImage* または CGImage をパラメーターとして受け入れることができなかったことです。私のUIImageをCメソッドに渡すことができるように、ギャップを埋める方法について誰かが私に手がかりを与えることができますか?
------------ Texture.h から ---------------
----Texture.mより---------------------
補足: 上記のコードは、Apple の元の変更されていないサンプル コードであり、コンパイル時にエラーは生成されません。ただし、(以下のように) UIImage* パラメーターを受け入れるように .h および .m を変更しようとすると、コンパイラーは次のエラーを生成します: 「エラー: UIImage の前に宣言指定子または "..." が必要です」
----------コンパイラ エラーを生成する変更された .h コード:-------------
opengl - 長方形のテクスチャ (拡張なし) をサポートする OpenGL のバージョンはどれですか?
以前は拡張機能によってサポートされていた長方形テクスチャが、OpenGL の一部のバージョンで直接サポートされるようになりました。つまり、非 2 の累乗サイズを指定するだけで、同じ基本的な opengl メソッドでテクスチャを作成できます。
私はグーグルで検索しましたが、OpenGL 仕様の決定的な変更ログが見つからないようです。アプリケーションのサポートを動的に検出し、ユーザーに通知するには、この情報が必要です。
1.5 や 3.0 などの数字で答えるだけでは十分ではありません。参照が必要です。