LINUX.ORG.RU

История изменений

Исправление linuhs_user, (текущая версия) :

Но этот вариант подходит только наверное для 2d графики

Для выделения 3D объектов можно написать такое... Рисуем разными цветами 3д объекты, смотрим какой цвет под мышкой и сверяем...

Entity_t ent[ENT_MAX];
int GetSelectedEntity(int x, int y) {
  glClear();
  glClearColor(Установи такой чтоб с id не пересекалось);
  glEnableColor(); 
  glDisableTextures(); 
  for(int i = 0;i != ENT_MAX;i++) {
    uint8_t* color = &i;
    glColor3ub(color[3], color[2], color[1]);
    DrawEntity(ent[i]);
  }
  Color_t cl = GetPixelOnScreenColor(x, y);
  int ent_id = 0;
  uint8_t* color = &ent_id;
  color[3] = cl.red;
  color[2] = cl.green;
  color[1] = cl.blue;

  glEnableTextures();
  glDisableColors();
  return(ent_id);
}

Исправление linuhs_user, :

Но этот вариант подходит только наверное для 2d графики

Для выделения 3D объектов можно написать такое... Рисуем разными цветами 3д объекты, смотрим какой цвет под мышкой и сверяем...

Entity_t ent[ENT_MAX];
int GetSelectedEntity(int x, int y) {
  glClear();
  glClearColor(Установи такой чтоб с id не пересекалось);
  glEnableColor(); 
  glDisableTextures(); 
  for(int i = 0;i != ENT_MAX;i++) {
    uint8_t* color = &i;
    glColor3ub(color[3], color[2], color[1]);
    DrawEntity(ent[i]);
  }
  Color_t cl = GetPixelOnScreenColor(x, y);
  int ent_id = 0;
  uint8_t* color = &ent_id;
  color[3] = cl.red;
  color[2] = cl.green;
  color[1] = cl.blue;
  return(ent_id);
}

Исходная версия linuhs_user, :

Но этот вариант подходит только наверное для 2d графики

Для выделения 3D объектов можно написать такое... Рисуем разными цветами 3д объекты, смотрим какой цвет под мышкой и сверяем...

Entity_t ent[ENT_MAX];
int GetSelectedEntity(int x, int y) {
  glClear();
  glEnableColor(); 
  glDisableTextures(); 
  for(int i = 0;i != ENT_MAX;i++) {
    uint8_t* color = &i;
    glColor3ub(color[3], color[2], color[1]);
    DrawEntity(ent[i]);
  }
  Color_t cl = GetPixelOnScreenColor(x, y);
  int ent_id = 0;
  uint8_t* color = &ent_id;
  color[3] = cl.red;
  color[2] = cl.green;
  color[1] = cl.blue;
  return(ent_id);
}