Methode pickup sur des vertices
Bonjour,
Je cherche à rectrouver sur quel vertice je clicque sur mon image générée sur OpenGL.
J'affiche une liste de point avec une couleur différente et j'essaie de récupérer le vertice correspondant à la couleur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
....................
cv::Vec3f position_to_vec3f(int position) {
cv::Vec3f item;
item[0] = (float)(position % 256) / 256.0f;
item[1] = (float)((position >> 8) % 256) / 256.0f;
item[2] = (float)((position >> 16) % 256) / 256.0f;
return item;
}
..................
std::vector<Vec3f> color_position(vertices_.size());
for_each(color_position.begin(), color_position.end(), [&](Vec3f &item) {
item = position_to_vec3f(position_index);
position_index++;
});
position_color_buffer_.create();
position_color_buffer_.setUsagePattern(QOpenGLBuffer::StaticDraw);
position_color_buffer_.bind();
position_color_buffer_.allocate(
color_position.data(), (int)color_position.size() * sizeof(Vec3f)); |
Je ne sais pas si c'est la bonne facon de faire du pickup. J'ai l'impression que de temps en temps l'index n'est pas correcte par ce que mon point ne change pas de couleur.