Question

Est-il possible d'utiliser pallettes de couleur dans ES 1.1 openGL?

Je développe actuellement un jeu qui a sprites des joueurs, et les sprites joueurs doivent pouvoir être changé aux couleurs de différentes équipes. Par exemple, en changeant les couleurs de chemises, mais pas les couleurs du visage, qui exclut une simple rotation de la teinte.

Est-ce possible, ou cela aura à mis en œuvre manuellement (modifier les données de texture directement)?

Était-ce utile?

La solution

Il est pas une caractéristique matérielle du MBX, mais une vérification rapide de gl.h pour ES 1.x du SDK iPhone révèle que GL_PALETTE4_RGB8_OES, GL_PALETTE8_RGBA8_OES et un tas d'autres sont disponibles comme l'une des constantes de passer à glCompressedTexImage2D, selon la page man . Ainsi, vous pouvez passer des textures avec des palettes à cela, mais je vais parier tout ce que le pilote vient de les transformer en textures RVB sur la CPU, puis les télécharger sur le GPU. Je ne crois pas que ces types de support d'Apple de texture compressée pour une raison autre que celle qu'ils font partie de la spécification ES 1.x.

ES 2.x vous êtes libre de faire ce que vous voulez. Vous pouvez facilement télécharger la palette comme une texture (avec, par exemple, le pixel (x, 0) étant la couleur pour l'index de la palette x) et la texture palettisée comme un autre. Vous pourrez ensuite utiliser deux unités de texture pour faire le travail que l'on pourrait probablement faire lors du traçage des fragments, donc utiliser votre propre jugement quant à savoir si vous pouvez vous permettre cela.

Autres conseils

Gardez à l'esprit que tout autre que le non-mipmappée GL_NEAREST se mélange entre les indices de palette. J'ai fini par étendre les textures palettisées dans ma méthode de décompression avant de les télécharger en BGRA32. (GLES 2.0)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top