2017-04-09 1 views
-2

J'ai pu obtenir la fenêtre de rendu, je suis sûr que mon shader fonctionne, et je peux récupérer l'image de mes actifs, mais quand je rends la vue, je reçois mon fond bleu et aucun sprite n'apparaît.OpenTK: les sprites ne sont pas rendus?

conception de base est la suivante:

Vues héritent de la WindowBase classe abstraite, qui a la plupart du levage de charges lourdes en elle et déclare un shader (je n'ai qu'un moment de l'actif). Ma seule vue en ce moment est juste Main.cs

Je peux ensuite déclarer des instances ObjectBase dans une vue. Les objets ont des animations composées de sprites qui sont liés aux textures générées par le service de texture via OpenGL.

Il ya aussi un service d'entrée qui ne fait pas encore grand chose, bien que je l'ai lié à la touche d'échappement pour fermer la fenêtre maintenant. Mais je doute qu'une partie du programme soit liée à ce problème.

Mise à jour: pièce par pièce, j'ai lentement converti l'original au mien et je l'ai trouvé cassé dès que j'ai échangé mon système Shader, donc la question se situe à l'intérieur. Je vais poster mon code vs leur est ici:

Their Shader class

My version

Je devine à ce point, je dois avez typo'd quelque part. Ou l'une de mes boucles n'est tout simplement pas compatible. Peut-être la façon dont je gère mon streamreader dans la classe Assets?

+2

Ne vous contentez pas de vider tout votre code, [créez un exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). – Vallentin

+0

Ceci est OpenGL, je ne suis vraiment pas certain s'il y a un moyen de simplifier ce que j'ai. C'est un moteur de jeu complet, et ce n'est pas le rendu des sprites. Il y a comme ... 8 endroits différents, il pourrait être effraction. Cependant, le code que vous voulez regarder est dans Views/Main.cs. –

Répondre

0

a résolu le problème: Mon problème était sur la ligne 114, j'avais le code suivant:

public int Attribute(string name) 
    { 
     return _attributes.ContainsKey(name) ? _attributes[name].Address : -1; 
    } 

    public int Uniform(string name) 
    { 
     return _uniforms.ContainsKey("name") ? _uniforms[name].Address : -1; 
    } 

    public uint Buffer(string name) 
    { 
     return _buffers.ContainsKey(name) ? _buffers[name] : 0; 
    } 

Comme suit:

_uniforms.ContainsKey ("nom") doit être _uniforms.ContainsKey (nom)