Vous dessinez un cercle et utilisez des coordonnées presque «normalisées» pour prendre les coordonnées de texture. Donc, ce que vous devez faire est de normaliser les coordonnées de texture à l'espace de texture [0, 1]. Le plus simple est de vérifier si la coordonnée de texture de haut et de gauche doit être (0.5, 0.0) et (0.0, 0.5) respectivement. Aussi en bas et à droite devrait être (0.5, 1.0) et (1.0, 0.5) respectivement. (Points qui touchent les bords).
Le problème dans votre code est:
circleCoordinates[idx++] = (circleCoordinates[previous])/(radius*2);
circleCoordinates[idx++] = (circleCoordinates[previous+1])/(radius*2);
Comme vous créez les points du cercle ceux-ci iront en dessous de 0, dans certains quarts de cercle qui prendra des points mal de texture. De même, vous dépassez votre cercle de centerX and centerY
, ce qui déplace également votre texture.
Le code de travail devrait être:
circleCoordinates[idx++] = (circleCoordinates[previous])/(radius*2) + 0.5 - centerX/(radius * 2);
circleCoordinates[idx++] = (circleCoordinates[previous+1])/(radius*2) + 0.5 - centerY/(radius * 2);
0,5 est due à vous normalisé à l'aide radius * 2
sans ajout centerPoint il carte à [-0,5, 0,5] mais vous avez aussi ajouté votre point central et aussi normalisé il faut donc soustraire center(XY)/(radius * 2)
pour enlever l'artefact.
TLDR; Votre (0,0) est l'intersection blanche de votre première image que vous voulez en haut à gauche. Normaliser en conséquence.
Alors, quel est le problème auquel vous faites face? Quelle est la sortie désirée? –
Salut j'ai éditer la question que j'ai mis mon désir de sortie. – Sayam