tutorial texture texturas figuras example español ejemplos coordenadas opengl indexing textures vertex

texture - OpenGL-Asocie la matriz de coordenadas de textura con la matriz de índice en lugar de la matriz de vértice?



texture opengl example c++ (3)

Siempre que usamos una matriz de índice para representar polígonos texturizados con glDraw * Elements *, podemos proporcionar una matriz de vértices y una matriz de coordenadas de textura. Luego, cada índice en la matriz de índice se refiere a un vértice en alguna posición en la matriz de vértice y la correspondiente coordenada de textura en la misma posición en la matriz de textura. Ahora, si, por ejemplo, varias primitivas separadas (como QUADS) comparten un vértice, pero requieren diferentes coordenadas de textura para ese vértice, tenemos que duplicar ese vértice en nuestra matriz tantas veces como tengamos diferentes coordenadas de textura. Por lo tanto, sería mucho más conveniente si la matriz de coordenadas de textura pudiera asociarse con las posiciones en la matriz de índice. De esa manera, no sería necesaria la duplicación de vértices para asociar un vértice específico con diferentes coordenadas de textura.

es posible? En caso afirmativo, ¿qué sintaxis utilizar?


Ahora, si, por ejemplo, varias primitivas separadas (como QUADS) comparten un vértice, pero requieren diferentes coordenadas de textura para ese vértice, tenemos que duplicar ese vértice en nuestra matriz tantas veces como tengamos diferentes coordenadas de textura.

Si las coordenadas de la textura difieren en los primitivos que comparten una posición de vértice, ¡entonces los vértices en un todo no se comparten! Un vértice es un vector único que consiste en

  • posición
  • normal
  • coordenada (s) de textura
  • otros atributos

Alterar cualquiera de estos, terminas con un vértice diferente. Debido a que compartir vértices no es lo que pensabas.


No. No de una manera sencilla.

Podrías usar texturas de búfer y lógica de sombreado para implementarlo. Pero no hay una API simple para hacer que los atributos se indiquen de la forma que desee. Todos los atributos se muestrean desde el mismo índice (excepto cuando se usan divisores de matriz instanciados , pero eso tampoco lo ayudará).

Tenga en cuenta que hacer esto será una compensación de memoria / rendimiento. El uso de texturas de búfer para acceder a los datos de vértice ocupará menos memoria, pero será significativamente más lento y más limitado que el simple uso de atributos regulares. No tendrá acceso a los atributos de vértice normalizados, por lo que la compresión de los datos de vértice requerirá una lógica de sombreado explícita. Y el acceso a las texturas de búfer es, en general, más lento.

Solo debes hacer esto si la memoria es de primera calidad.


Puedes duplicar los vértices de modo que 1 tenga 1 coordenada de textura y el otro tenga la otra. La única desventaja de esto es que si necesita transformar la superficie, puede mover 1 vértice pero no ambos. Por supuesto, es posible hacerlo "de manera imperativa", es decir, cuando solo se ejecuta un bucle y se usa una coordenada de textura diferente a medida que avanza, pero eso no sería VBO y mucho más lento