私は0.1以下に設定しても近くの平面が遠すぎるように見えるカメラに問題があります。すでにオフセット値があるようです。だから、実際にシーンの中の任意のオブジェクトを十分に近づけることはできません。OpenGLの近平面がクリッピングすぎる
示された黒い三角はクリッピングです。 現在、私はパースペクティブマトリックスを使用しています。ここにはそのコードがあります。
Matrix4x4 Matrix4x4::Perspective(Float fov, Float aspectRatio, Float near, Float far)
{
Matrix4x4 result(1.0f);
Float q = 1.0f/tan(toRadians(0.5f * fov));
Float a = q/aspectRatio;
Float b = (near + far)/(near - far);
Float c = (2.0f * near * far)/(near - far);
result.elements[0 + 0 * 4] = a;
result.elements[1 + 1 * 4] = q;
result.elements[2 + 2 * 4] = b;
result.elements[2 + 3 * 4] = -1.0f;
result.elements[3 + 2 * 4] = c;
return result;
}
私はこのバグが数学クラスのものだとは思わない。これは、数学のコードは主に私が取り組んできた別のプロジェクトから来たものです。そこから完璧に動作します。 私はそれを私がレンダリングする方法(フォワードレンダラー)とは思わない。マウスとキーボードを使ってカメラを動かすことができるので、私の指針が良いと思います。
しかし!私はバッファと思われます。 OpenGLバッファ。しかし、私は完全にはわかりません。
私はこのバグをどのように捜索して解決できるかについて、誰かに私に助言を与えてくれることを願っています。
ありがとうございます。
を解決し、あなたは投影行列(ビュー、世界、そして他のものは何でも持っている)以外の他のすべての変換を提供する必要があります。キューブの頂点バッファも明らかに必要です – Ap31
どのような問題があるのかを知る手がかりはありますか? – JekasG
@JekasG:あなたのキューブは単にZ <= nearを越えて到達するかもしれませんが、あなたの変換セットアップとキューブの頂点を見ることなく、それを知ることはできません。対角線に沿って立方体を見ていますが、その長さは 'sqrt(3 * 1)= sqrt(3)=〜= 1.73'の倍率で伸びています。 – datenwolf