gl_PointSize correspondente ao tamanho do espaço no mundo
Se você deseja renderizar uma geometria impostor (por exemplo,uma esfera), a prática padrão é desenhá-lo usando dois triângulos (digamos, passando um vértice e fazendo uma tira triangular com um sombreador de geometria).
Isso é bom porque permite que a extensão do quadro de avisos seja definida de maneira bastante simples: você calcula as posições reais do espaço mundial diretamente.
Os sombreadores de geometria podem alternadamente gerar primitivas de pontos, e não vejo uma razão pela qual elas não devam. O único problema é encontrar uma maneira de escalargl_PointSize
para que você obtenha esse efeito.
O único precedente que encontrei foramessa questão (cuja resposta não tenho certeza está correta) eessa questão (que não tem resposta).
Vale a pena notar que é bastante simples escalar o ponto corretamente com a distância (fazendogl_PointSize = constant/length(gl_Position)
, mas isso não é controlável; você não pode dizer, por exemplo: quero que este ponto pareça ter duas unidades mundiais.
Então: alguém sabe como fazer isso?