nokotan / OpenSiv3D

[NO LONGER MAINTAINED] Experimental port of OpenSiv3D to Web
https://siv3d.kamenokosoft.com
MIT License
10 stars 1 forks source link

FillMode を Wireframe にしてもワイヤフレームで描画されない #47

Closed Raclamusi closed 1 year ago

Raclamusi commented 1 year ago

ScopedRenderStates(2D|3D)RasterizerState::WireframeCullNone などを指定してもワイヤフレームで描画されず、普通に描画されます。

この問題によって、下の例やサンプル 36.13 複雑な 3D 形状を描くサンプル 36.21 ワイヤフレームで描画するなどが正しく動きません。

# include <Siv3D.hpp>

void Main()
{
    while (System::Update())
    {
        const ScopedRenderStates2D rasterizer{ RasterizerState::WireframeCullNone };

        Shape2D::Heart(200, Scene::Center()).draw(Palette::Skyblue);
    }
}

図1 OpenSiv3D for Web v0.6.6r1 での実行結果 図1 OpenSiv3D for Web v0.6.6r1 での実行結果

図2 OpenSiv3D v0.6.6 での実行結果(期待する結果) 図2 OpenSiv3D v0.6.6 での実行結果(期待する結果)

nokotan commented 1 year ago

WebGL バックエンドにおいて、WebGL 2.0 に glPolygonMode の実装がないため、OpenSiv3D for Web ではワイヤーフレーム描画を実装することはできません。

Raclamusi commented 1 year ago

WebGL にそんな制約があるんですね。 できたら Web 固有の注意点のページとかに書いて欲しいです(もうどこかに書いてたらごめんなさい)。