OpenGL では を使用して線のパターンを設定できglEnable (GL_LINE_STIPPLE);glLineStipple(2,0x00FF);
、dx9 ではID3DXLine
のメソッドを使用して点描線を描画できSetPattern(0x00FF)
ます。
しかし、dx11 には点描線のパターンを設定する方法はないようです。それが本当なら、dx11 で点線を描画するスマートな方法があるのだろうか?
OpenGL では を使用して線のパターンを設定できglEnable (GL_LINE_STIPPLE);glLineStipple(2,0x00FF);
、dx9 ではID3DXLine
のメソッドを使用して点描線を描画できSetPattern(0x00FF)
ます。
しかし、dx11 には点描線のパターンを設定する方法はないようです。それが本当なら、dx11 で点線を描画するスマートな方法があるのだろうか?
この質問を見るかもしれません。Direct3D 10+ と同様の機能を持つ非推奨の最新の OpenGL でライン スティプルを行う方法を尋ねます。
私の答えは基本的に、アルファ テストとジオメトリ シェーダーを組み合わせて使用することでした。
おそらく、パターンを 0.0 (線なし) または 1.0 (線) としてエンコードするアルファ (または赤) チャネルで 1D テクスチャを使用してから、線のテクスチャ座標を 0 から 1 に変更し、フラグメント シェーダで単純なアルファ テスト。アルファがしきい値を下回るフラグメントを破棄します。ジオメトリ シェーダーがラインの texCoords を生成するのを容易にすることができます。そうしないと、ラインごとに異なる頂点が必要になります。このようにして、texCoord を行のスクリーン スペースの長さに依存させることもできます。
(ポリゴン モード GL_LINE を使用して) 三角形を描くと、全体がより難しくなります。次に、ジオメトリ シェーダーで自分で三角形を線に変換し、三角形を配置して線を配置する必要があります (これは、ポリゴン モードが廃止されていない場合は、将来的に非推奨になる可能性もあります)。
この質問は OpenGL に関するものでしたが、基本的な原則はまったく同じで、答えから HLSL へのシェーダーをマッピングするだけで済みます。単純さを考えると、それほど難しくはないはずです。