2017-03-22 18 views
0

この問題が発生しないようにしてください。しかし、それは完全に垂直または水平です。水平線または垂直線を描くことは表面上に描画されません。 Vulkan

私はポイントA {400,300}とB {400,200}を持っているとします。今、私はこれらの点の間に線を描こうとすると、それは画面上の方法を見つけることはありません。

ただし、点Aを{401,300}に配置するように変更すると、プログラムは実行されるのでプログラムが実行されます。

まっすぐな水平線や垂直線が描画されない理由はありますか?そしてそれを回避する方法?すべての直線を傾けたくない。パイプラインのセットアップの

パート:

inputAssembly.topology = vk::PrimitiveTopology::eLineStrip; 
rasterInfo.polygonMode = vk::PolygonMode::eLine; 

インテルigpuにVulkanSDK 1.0.42.1使用。

編集: ラスタライザで線幅を1.f以上にすると描画されますしかし、すべてのGPUがそれを実行できるわけではありません。しかし、少なくとも一時的な変種。

+0

私の推測では、整数の座標で終点を持つ垂直または水平の線はフレームバッファピクセルの間に正確に並んでいます...しかし、それでもラスタライズ規則では何かが描画されることを保証する必要があります... – Quinchilion

答えて

0

(私はそれが非常に古い投稿だと知っていますが、答えは提供されていません;-))。

1.0fより広い行の場合 - ワイドライン機能を有効にした場合にのみ、そのような行を描画することができます。使用している物理デバイスでサポートされている場合にのみ有効にすることができます。この機能を有効にしないと、パイプライン作成中に線幅に1.0以外の値を指定することはできません。したがって、たとえ動作しても、仕様を破っているため、一時的な解決策に過ぎません。

この種の動作は、ドライバのバグであることを示しています。最新のバージョンを試してください(もしあなたが既にそれをやっていないのであれば)、それがインテルのサポートに連絡してバグを提出するのを助けていないのであれば(もしあなたがすでにそれをやっていなければ;-))。

関連する問題