J'ai quelques problèmes avec mon appareil photo, où le plan proche semble être trop loin même si je l'ai réglé à 0,1 ou moins. Il semble qu'il y ait déjà une certaine valeur de décalage. Vous ne pouvez donc pas vraiment vous approcher d'un objet arbitraire dans la scène.OpenGL près de l'avion est trop écrêté
Voici une apparence visuelle du bogue.
Le triangle noir représenté est l'écrêtage. Actuellement, j'utilise une matrice de perspective et voici le code pour cela.
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;
}
Je ne pense pas que le bogue provient de la classe maths. C'est parce que le code mathématique provient principalement d'un autre projet sur lequel j'ai travaillé. Et fonctionne parfaitement bien à partir de là. Je ne soupçonne pas non plus que c'est la façon dont je le rends (rendu vers l'avant). Je crois que mes indications sont bonnes car je suis capable de déplacer et de faire pivoter l'appareil photo via la souris et le clavier.
Mais! Ce que je soupçonne, c'est les tampons. Les tampons OpenGL. Mais je ne suis pas entièrement sûr.
J'espère que quelqu'un me donnera des conseils sur la façon dont je peux chasser et s'attaquer à ce bug.
Merci d'avance.
d'abord, vous devrez fournir tous les autres transformées en plus la matrice de projection (vue, mondiale, et tout ce que vous avez d'autre). Le tampon de vertex pour le cube est évidemment également nécessaire. – Ap31
Avez-vous une idée du problème? – JekasG
@JekasG: Votre cube pourrait simplement atteindre au-delà de Z <= near mais nous ne pouvons pas le dire sans voir votre configuration de transformation et les sommets du cube. Vous regardez le cube le long de sa diagonale, dont la longueur est allongée d'un facteur de 'sqrt (3 * 1²) = sqrt (3) = ~ = 1,73'. – datenwolf