問題タブ [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.
iphone - 3 番目のテクスチャによる 2 つのテクスチャの補間 (係数はアルファではなく明度にあります)
ピクセルごとに 2 つのテクスチャ A と B を動的テクスチャ C で効率的に補間し、単純なクワッドに描画するにはどうすればよいですか? マルチパスアルゴリズムが受け入れられました。
glTexImage2D
CPU でフレームごとに C テクスチャを計算し、それをアルファのみのテクスチャにアップロードすることにある程度成功しました。
これは機能しましたが、パフォーマンスが不足していたため、コピー帯域幅のボトルネックを回避するために、C の次元をフル サイズの半分に縮小する必要がありました。
そのため、パフォーマンス上の理由から、Render-to-Texture を使用してすべての C テクスチャ更新を実行しようとしています。
レンダリングに必要なバッファを設定できましたが、基本的に、アルファではなく明度/RGB 情報でエンコードされたマスクを使用して、RGB または RGBA 形式のテクスチャを取得します。
これをテクスチャリング パイプラインにプラグインするために必要なアルファ テクスチャに効率的に変換するにはどうすればよいですか? プログラム可能なパイプライン (シェーダー) はなく、iPhone で使用できるテクスチャ ユニットは 2 つだけであることに注意してください。
更新: A と B は RGB のみのテクスチャです。つまり、アルファはありません。
iphone - OpenGL ES レンダリング トゥ テクスチャ
OpenGL ES でシーンをテクスチャにレンダリングする簡単なコードを見つけるのに苦労しています (特に iPhone の場合)。私は次のことを知りたいと思っています。
- OpenGL ES でシーンをテクスチャにレンダリングするにはどうすればよいですか?
- OpenGL ES でレンダー ターゲットにできるテクスチャを作成するには、どのパラメータを使用する必要がありますか?
- このレンダリングされたテクスチャを他のプリミティブに適用することに何か影響はありますか?
opengl-es - アルファを使用したテクスチャの問題へのレンダリング
テクスチャにレンダリングしてから同じ画像を描画すると、すべてが暗くなるようです。この画像を取得するには:
http://img24.imageshack.us/img24/8061/87993367.png
左上の正方形を色付き(1, 1, 1, .8)
でテクスチャにレンダリングし、次にそのテクスチャをレンダリングし、中央の正方形 (同じ色) を別のテクスチャにレンダリングし、最後にそのテクスチャと右下の正方形 (同じ色) を画面にレンダリングします。
ご覧のとおり、テクスチャにレンダリングするたびに、すべてが少し暗くなります。
Render-to-Texture コードは次のようになります: (iPhone で OpenGL ES を使用しています)
ここで私が間違っていることはありますか?それを理解するためにさらにコードが必要ですか?ここで何が起こっているのでしょうか?
opengl - テクスチャにレンダリングするときの画像ブレンディングの問題
これは私の最後の質問に関連しています。この画像を取得するには:
http://img252.imageshack.us/img252/623/picture8z.png
白い背景を描きます(color =
(1, 1, 1, 1)
)。color =とblend関数を使用して左上の2つの正方形をテクスチャにレンダリングしてから、color=
(1, 0, 0, .8)
とblend関数(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
を使用してテクスチャを描画し(1, 1, 1, 1)
ます(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
。右下の正方形をcolor=
(1, 0, 0, .8)
とblend関数で描画します(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
。
私の計算では、テクスチャへのレンダリングの正方形は色を持っている必要があります
そのため、白い背景にそのテクスチャを描画した後、色を付ける必要があります
右下の正方形は色が付いているはずです
同じように見えるはずです!私の推論は間違っていますか?私の計算は間違っていますか?
いずれにせよ、私の目標は私のシーンの一部をキャッシュすることです。テクスチャにレンダリングしてからそのテクスチャを描画して、シーンをインラインで描画するのと同じようにするにはどうすればよいですか?
c++ - OpenGLとFBORTT、すべきでないときにブレンドする
これは本当に簡単なはずですが、何時間も費やしていて、何が起こっているのかわかりません。
フラットカラーのフルスクリーンクワッドをテクスチャにレンダリングしてから、glGetTexImageで結果を読み戻しています。これはGPGPUに関連しているので、アルファ値を他の3つと同じように動作させたいと思います。GL_RGBA32F_ARB
重要な場合は、10.5のMacBook ProでFBO、テクスチャフォーマット、NVidiaカードを使用しています。
指定したアルファが1の場合にのみ、正しい色が返されます。他の値では、明示的に無効にしたにもかかわらず、フレームバッファにすでにあるものとブレンドしているように見えますGL_BLEND
。ブレンドと使用も有効にしてみglBlendFunc(GL_ONE, GL_ZERO)
ましたが、最終結果は同じです。レンダリングする前にフレームバッファをゼロにクリアすることで修正できますが、なぜそれが必要なのかを理解したいと思います。2番目のテストとして、元の4チャンネルの色を元に戻したい場合に、2つの重なり合う四角形をレンダリングするとブレンドされた結果が得られます。確かに、単色のクワッドはフレームバッファ内のピクセルを完全に上書きする必要がありますか?根本的なことを誤解していると思います。ありがとう。
directx - ピクセルシェーダーでテクスチャを設定し、それをレンダリングターゲットにしますか?
そのシーンのレンダリングターゲットでもあるテクスチャを渡すシェーダーを使用してシーンをレンダリングすると、望ましくない動作が発生するのではないかと思いました。
だから基本的に:
これは正確に何を引き起こしますか?
レンダリングする前にレンダリングターゲットをクリアしなくても、テクスチャはすべて同じように機能しますか?device-> Endが呼び出されるまで、最終的な変更はテクスチャに書き込まれないと思いますか?
iphone - OpenGL ES はテクスチャにレンダリングしてから、テクスチャを描画します
テクスチャにレンダリングしてから、iPhone で OpenGL ES を使用してそのテクスチャを画面に描画しようとしています。この質問を出発点として使用し、Apple のデモ EAGLView のサブクラスで描画を行っています。
インスタンス変数:
フレーム バッファとテクスチャを初期化するには、次のようにします。
さて、いつものように自分のシーンを画面に描くだけで、うまくいきます:
しかし、「textureFrameBuffer」にレンダリングしてから「テクスチャ」を画面に描画すると、結果の画像は上下逆になり、「裏返し」になります。つまり、3D オブジェクトの法線が外側ではなく内側を向いているように見えます。各オブジェクトの最前面は透明で、背面の内側が見えます。コードは次のとおりです。
それに応じて (glTexCoordPointer) 座標を (Texture2D の drawInRect メソッドで) 並べ替えることで、画像の上下を簡単に反転できますが、「裏返し」の問題は解決しません。
Texture2D テクスチャを手動で作成した OpenGL テクスチャに置き換えてみましたが、結果は同じでした。PNG 画像から読み込まれた Texture2D の描画は正常に機能します。
オブジェクトの描画に関しては、各頂点には単位法線が指定されており、GL_NORMALIZE
有効になっています。
画面にレンダリングされると、すべてがうまく描画されます。GL_DEPTH_TEST
有効になっており、うまく機能しています。
これを修正する方法に関する提案はありますか? ありがとう!
android - Android OpenGLES Render-to-Texture
私はiPhone用のグラフィックアプリを作成しており、最新のアプリ「レイヤー」をAndroidプラットフォームに移植したいと考えています。Layersは、ユーザーが画面に描画したり、さまざまなブラシや色などで多層の絵を作成したり、PSDにエクスポートしたりできるペイントアプリです。デスクトップ同期、スマッジツール、たくさんの良いものがあります... http://www.layersforiphone.com/
私は月曜日にAndroidプラットフォームを見始めましたが、大きな問題に遭遇しました。最高のパフォーマンスを提供するため、OpenGLを使用してすべての描画を行います。ただし、テクスチャにレンダリングしてからテクスチャを使用する必要がある場所がいくつかあります。例えば:
- ブラシテクスチャとスプライトのラインを使用して、テクスチャAに黒いペイントストロークを作成します
- ブラシcolor+alphaをglColor4fに入れてから、テクスチャAを画面に描画します。
iPhoneでは、ユーザーの指が動くときにこれを継続的に行い、第1世代のiPod Touchで12〜15fpsを達成することができます。ブラシストロークを構成する個々のスプライトに色とアルファを適用しても、正しい結果が得られないため、これが必要です(スプライトが重なり、ストロークが暗くなりすぎるため)。
AndroidプラットフォームはOpenGLES1.0をサポートしていますが、フレームバッファを処理するための主要な機能が省略されているようです。テクスチャをフレームバッファにバインドし、OpenGLを使用してそれに描画する方法が見つかりません。
これが私が通常iPhoneでそれについて行う方法です:
Androidプラットフォームにこのようなものはありますか?iPhoneでは、OpenGLはソフトウェアベースの描画よりも大幅に高速であり、唯一の実行可能なソリューションです(私を信じてください-私もCoreGraphicsペイントアプリを作成しました...)。たぶん私がAndroidで取ることができる別のルートがありますか?必要なフープを飛び越えていくつもりですが、パフォーマンスが良くない限り(画面に描画しているときに10fps以上)アプリを公開しません。
opengl - OpenGLFBOテクスチャをGLXPixmapにレンダリングする
私は次のことを目的としたコードを書いています。1。FBOを使用してOpenGLテクスチャにレンダリングします。2.FBOテクスチャからXPixmapに接続されているGLXPixmapに描画します。3.XPixmapを画面上のウィンドウに描画します。
FBOテクスチャを通常のOpenGL描画に置き換えると、ステップ3はうまく機能し、ステップ2はうまく機能します。
しかし、少なくとも私が持っているコードでは、上記のことを実行すると、機能しません。GLXPixmapに色付きの背景を指定し、1〜3を実行すると、画面のウィンドウが白に変わりますが、他に描画したものは何も表示されません。
ですから、誰かがヒントを提供したり、簡単なサンプルコードを教えてくれることを願っています。このために私が持っているコードはかなり複雑ですが、必要に応じて、レビューのためにここに投稿する簡単なサンプルバージョンを書いてみることができます。
opengl - opengl-フレームバッファの以前のコンテンツとのブレンド
フレームバッファオブジェクトを介してテクスチャにレンダリングしています。透明なプリミティブを描画すると、そのプリミティブはその単一の描画ステップで描画された他のプリミティブと適切にブレンドされますが、フレームバッファの以前のコンテンツと適切にブレンドされません。
テクスチャのコンテンツを新しいデータと適切にブレンドする方法はありますか?
編集:より多くの情報が必要です、私はより明確に説明しようとします。
私が使用しているブレンドモードはGL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHAです。(これは通常、標準のブレンドモードだと思います)
マウスの動きを追跡するアプリケーションを作成しています。前のマウスの位置と現在のマウスの位置を結ぶ線を描画します。フレームごとに線を描画したくないので、テクスチャに描画し、テクスチャをクリアせずに、それを使用して長方形を描画することにしました。それを表示するためのテクスチャ。
これはすべて正常に機能しますが、アルファが1未満のシェイプをテクスチャに描画すると、テクスチャの以前のコンテンツと適切にブレンドされません。テクスチャにalpha=.6の黒い線が描かれているとしましょう。数サイクル後に描画し、次にそれらの線上にalpha=.4の黒い円を描画します。円の「下」の線は完全に上書きされます。円は平らな黒ではありませんが(白い背景と適切に混ざり合っています)、予想どおり、円の下に「暗い線」はありません。
ただし、同じフレームに線と円を描くと、適切にブレンドされます。私の推測では、テクスチャは以前のコンテンツとブレンドされていません。まるでglclearcolorとブレンドしているだけのようです。(この場合、<1.0f、1.0f、1.0f、1.0f>です)