2017-07-16 17 views
-3

Je suis en train de créer un jeu de pixels simple descendant. Et je veux ajouter quelques lumières simples là-bas, mais je ne sais pas quelle est la meilleure façon de le faire. Cette image est un exemple de lumière que je veux réaliser.
http://imgur.com/a/PpYiR
Lorsque j'ai googlé cette tâche, je n'ai vu que des solutions pour ce type de lumière.
https://www.youtube.com/watch?v=mVlYsGOkkyM
Mais j'ai besoin d'augmenter la luminosité de la partie de texture lorsque la source de lumière est proche. Comment puis-je faire ceci si j'utilise des textures avec GL_QUADS sans UV?openGL simple 2d light

+0

Avez-vous pensé à l'ombrage? S'il vous plaît lire [Comment puis-je poser une bonne question?] (Https://stackoverflow.com/help/how-to-ask) – Rabbid76

+0

pour pipeline fixe (sans shaders), vous pouvez soit utiliser [lumières OpenGL natives] (https://www.cse.msu.edu/~cse872/tutorial3.html) réglé sur les points lumineux. Ou utilisez des textures alpha + Blending pour les motifs personnalisés. – Spektre

Répondre

-1

Ok, ma réponse ne répond peut-être pas totalement à votre question, mais elle vous mènera dans la bonne direction.

Il semble que vous utilisiez le mode immédiat, celui-ci est maintenant déprécié et le passage aux VBO (objets tampon vertex) vous facilitera la vie.

L'éclairage de l'image semble être dessiné à la main. Vous ne pouvez pas créer ce style d'éclairage exactement avec le meilleur algorithme.

Vous avez vraiment deux options pour résoudre votre problème, et les deux auront besoin de coordonnées de texture et de shaders.

Vous pouvez utiliser des photogrammes qui utilisent une texture pré-générée multipliée par la texture d'un quad. Ceci est extrêmement rapide, mais nécessite un outil pour générer les cartes de lumière qui pourraient être un peu sur votre tête pour le moment.

Au lieu de cela, apprendre l'éclairage à base de shader. De nombreux tutoriels existent pour l'éclairage 3D mais les principes restent les mêmes pour la 2D. Certains Google vous fournira les ressources dont vous avez besoin pour implémenter les shaders. Un algorithme d'éclairage basé sur la distance de base ressemblera à ceci:

GL_Color = texturecolor * 1.0/distance(light_position,world_position); 

Il multiplie la couleur du texel par la distance texel est de la position de la lumière. Il y a des tutoriels qui vont plus en profondeur à ce sujet.

Si vous souhaitez que l'éclairage soit "rétro" comme dans la première image, vous pouvez sous-échantillonner les couleurs lors d'une étape de post-traitement.

+0

Ceci n'est pas une réponse à la question. – Rabbid76