問題タブ [render-to-texture]

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 投票する
1 に答える
1220 参照

c++ - OpenGL ESは、テクスチャの配置の問題としてビットマップグリフをレンダリングします

私はこれをテストしているだけなので、別のアプローチは必要ありません(GL拡張機能はありません)。誰かが私のGLESの使い方に明らかな間違いを見つけてくれることを願っています。

32x32よりも小さいグリフのビットマップ(幅と高さは必ずしも2の累乗ではありません)を取得して、レンダリングできるようにテクスチャに入れたいと思います。最初に空の32x32テクスチャを作成してから、ピクセルをより大きなテクスチャにコピーします。

次に、テクスチャ座標を使用して、テクスチャのビットマップ部分のみを描画しようとします。

これで、すべてがうまくいけば、頂点によって作成される正方形のサイズは、テクスチャのビットマップ部分と同じサイズになり、ビットマップが正確に描画されます。

たとえば、私のグリフが16x16だったとすると、32x32テクスチャの左下の象限を占めるはずです。その場合、texCoordsは(0、0.5)、(0.5、0.5)、(0、0)、および(0.5、0)で正しいように見えます。

ただし、私の12x12の「T」グリフは次のようになります。代替テキスト

誰もが理由を知っていますか?

ところで。まず、2D作業用の投影行列を次のように設定します。

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

xna - XNA - テクスチャのアルファ チャネルにレンダリングする

実行時にアルファ チャネルを変更したいテクスチャがあります。
テクスチャのアルファ チャンネルを描画する方法はありますか?
または、チャネルを別のテクスチャのチャネルに置き換えますか?

ありがとう、
SW。

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

opengl - GLSLVertexShaderルックアップテーブルの質問

プログラムのデバッグに問題があります。配列をルックアップテーブルとして使用して、頂点シェーダーの頂点の位置をオフセットしようとしていますが、配列を正しくリンクしているかどうかさえわかりません。オフセット係数は常にゼロになります(ベクトルに形状を与えるのではなく、ベクトルを平坦化します)。そのため、texture1D座標に間違ってアクセスしているか、配列がテクスチャに正しくバインドされていません。

率直に言って、1Dテクスチャから値を取得するためにどの座標を使用すべきかわかりません...しかし、すべての組み合わせを試しました。

ここで、配列をセットアップし、シェーダーにバインドします。

そして私の頂点シェーダー:

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

iphone - iPhone のオフスクリーン FBO に書き込み、次に読み取ります。シミュレーターでは動作しますが、デバイスでは動作しませんか?

Apple の GLImageProcessing の例に基づいて、iPhone で画像操作をしようとしています。

最終的に私がやりたいことは、イメージをテクスチャにロードし、サンプル コードで 1 つ以上の操作 (色相、彩度、明るさなど) を実行し、結果のイメージを後で処理するために読み戻すことです。節約。ほとんどの場合、これは画面に触れる必要がないため、FBO が適しているのではないかと考えました。

手始めに、オフスクリーン FBO を作成し、そこに描画し、データを画像として読み戻す小さな例をまとめました。これがシミュレーターで完全に機能したときは興奮しましたが、実際のデバイスで黒い画面が表示されたことに気付いてがっかりしました。

免責事項: 私の OpenGL はかなり古いので、OpenGL ES についてかなりの学習曲線が必要であり、テクスチャ ウィザードになったことはありません。フレームバッファアクセスに関して、デバイスがシミュレータとは異なる特性を持っていることは知っています (デバイスでの必須のオフスクリーン FBO とスワップ、シミュレータでの直接アクセス)。 、かなり広範な検索の後でも。

助言がありますか?

編集:

もちろん、答えは、ビットマップ形式は GL_BGRA ではなく GL_RGBA であるべきだというものでした:

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

c++ - DirectX10テクスチャにテキストを描画

テクスチャメッシュオブジェクトにテキストを描画しようとしています。メッシュは基本的に画面の前面に貼り付けられた立方体です。(全体的にメニューシステムを目指しています)。少しグーグルした後、テクスチャにテキストを描画する方法に関する情報が驚くほど少ないことがわかりました。テクスチャを作成し、それをレンダリングソースとして設定してから描画するのと同じくらい簡単なはずだと読みましたが、これを理解することはできません。

ジャンプスタートをするために必要な関数呼び出しを含むアイデア、提案、またはスケルトンコードはありますか?

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

iphone - iPhone での非 2 のべき乗テクスチャへのレンダリング

iPhone (2G 以前) で OpenGL ES 1.1 を使用してテクスチャにレンダリングすることはできますか? テクスチャをレンダー バッファーとしてバインドする場合、POT サイズではないレンダー バッファーのサイズにする必要があります。ただし、OpenGL ES 1.1 ではテクスチャが POT である必要があります。

ES 1.1ではできないのでしょうか?

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

graphics - マネージドDirectX後処理フラグメントシェーダーレンダリングの問題

私はManagedDirectX 2.0とC#を使用しており、RenderToSurfaceヘルパークラスを使用して画面をテクスチャにレンダリングすることによって構築されたテクスチャにフラグメントシェーダーを適用しようとしています。

これを行うために使用しているコードは次のとおりです。

これは、RenderTextureと呼ばれるTextureオブジェクトにアタッチされているSurfaceRenderSurfaceにレンダリングされます。

次に、次のコードを呼び出してサーフェスを画面にレンダリングし、レンダリングされたテクスチャに2番目のシェーダー「PostProc」を適用します。このシェーダーは、ピクセルごとにカラー値を組み合わせて、シーンをグレースケールに変換します。私はここのチュートリアルに従っています:http://rbwhitaker.wikidot.com/post-processing-effects

ただし、私が見るのは、テクスチャにレンダリングされた元のレンダリングされたシーンだけですが、2番目のシェーダーによって変更されていません。

重要な場合に備えて、FXファイルを以下に示します。

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

xna - 最適化を念頭に置いてテクスチャレジスタとサンプラーを理解する

3つの異なるxna効果があり、1つは初期化、1つは反復、もう1つは最終化と呼ばれます。

Initialiseはテクスチャ入力を受け取らず、3つのターゲットにレンダリングします。Iterateは、これら3つをテクスチャ入力として受け取り、3つのターゲットにレンダリングし、iterateは複数回実行されます。Finalizeは1つのテクスチャ入力を受け取り、1つのターゲットにレンダリングします。

いくつかのヘルパークラスがありますが、以下のレンダリングループから何が起こっているのかは明らかです。

私のテクスチャ宣言は次のマクロを使用しており、出力構造体とともに次のように定義されています。

私が疑問に思っているのは、入力と出力のレンダリングターゲットを異なるテクスチャレジスタに配置し、2つの反復ピクセルシェーダーを交互に実行して、最初の3つのレジスタから読み取り、最後の3に書き込み、もう1つを最後の3つと最初の3つに書き込みますか?

レンダリングターゲットと入力テクスチャの設定には何度もコストがかかると思いますが、これはもう必要ありません。これはそれを回避しますか、そしてそれはそれだけの価値がありますか?

シェーダー内のコードを個別に最適化できることに注意してください。必要に応じて、個別の質問をします。

0 投票する
3 に答える
4698 参照

c# - RenderTarget に書き込んだ後、出力を効率的に複製する方法は?

ここにいる XNA 初心者は、毎日学習しています。RenderTarget2D を使用して、複数のテクスチャを 1 つに合成する方法を考え出しました。ただし、ほとんどの目的で RenderTarget2D を Texture2D として使用できますが、決定的な違いがあります。これらのレンダリングされたテクスチャは、バックバッファーのサイズが変更されると失われます (グラフィック デバイスのメモリが不足しているなどの他の状況では間違いありません)。

今のところ、完成した RenderTarget2D を新しい不揮発性 Texture2D オブジェクトにコピーしているだけです。ただし、そうするための私のコードはかなり醜いです。これを行うより優雅な方法はありますか?疲れているだけかもしれませんが、Google や SO で答えが見つかりません。

少し単純化:

IsContentLostをチェックして必要に応じて再レンダリングする必要があると思いますが、これはメインの描画ループの途中で発生し、もちろん SpriteBatches をネストすることはできません。「レンダリング TODO」リストを維持し、メインの SpriteBatch が終了した後にそれらを処理すると、次のフレームで使用できるようになります。それは好ましい戦略ですか?

このコードは数回しか呼び出されないので、パフォーマンスは問題になりませんが、正しく行う方法を学びたいと思います。

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

iphone - iPhone で glFramebufferTexture2D が特定のテクスチャ サイズで失敗する

テクスチャをフレームバッファにアタッチしようとすると、glCheckFramebufferStatus が特定のテクスチャ サイズに対して GL_FRAMEBUFFER_UNSUPPORTED を報告します。第 2 世代と第 4 世代の iPod Touch でテストしました。失敗するテクスチャのサイズは、2 つのモデル間で同じではありません。

いくつかの興味深い結果を次に示します。

第 2 世代 - 8x8 は失敗し、16x8 は失敗しましたが、8x16 は成功しました!

第 4 世代 - 8x8 は成功し、8x16 は成功しましたが、16x8 は失敗しました!

さまざまなサイズのテクスチャの取り付けをテストするために使用したコードを次に示します。

両方のサイズが 16 ピクセル以上であれば、両方のデバイスですべて問題なく動作するようです。しかし、気になるのは、フレーム バッファ オブジェクトにアタッチするためのテクスチャ サイズの要件について書かれたものを見たことがないということです。現時点での 1 つの解決策は、テクスチャ サイズを少なくとも 16 ピクセルに制限することです。どのテクスチャ サイズが許可されているかを動的に把握するために、起動時にこのテスト コードを実行することもできますが、それは少しばかげているようです。