2017-04-09 1 views
-2

Ich habe das Fenster zum Rendern bekommen, ich bin mir ziemlich sicher, dass mein Shader funktioniert, und ich kann das Bild von meinen Assets holen, aber wenn ich die Ansicht rendere, bekomme ich nur meinen blauen Hintergrund und kein Sprite erscheint.OpenTK: Sprites nicht Rendern?

Basisausführung ist wie folgt:

Ansichten die abstrakte Klasse WindowBase erben, die in ihm die meisten der schweren Hebe hat und erklärt, einen Shader (I man nur jetzt in Assets haben). Meine einzige Ansicht im Moment ist nur Main.cs

Ich kann dann ObjectBase-Instanzen in einer Ansicht deklarieren. Objekte enthalten Animationen, die aus Sprites bestehen und mit Texturen verknüpft sind, die vom Textur-Service über OpenGL generiert werden.

Es gibt auch einen Eingabedienst, der noch nicht viel tut, obwohl ich es an Escape Key gebunden habe, um das Fenster sofort zu schließen. Aber ich bezweifle, dass ein Teil des Programms mit diesem Problem verbunden ist.

Update: Stück für Stück, konvertierte ich langsam das Original zu meinem und fand es brach, sobald ich zu meinem Shader-System wechselte, so liegt das Problem darin. Ich werde meinen Code schreiben vs ihr hier:

Their Shader class

My version

ich an dieser Stelle bin zu raten, ich must've irgendwo typo'd. Oder eine meiner Loops ist einfach nicht kompatibel. Vielleicht die Art, wie ich meinen streamreader in der Assets-Klasse behandle?

+2

Verteilen Sie nicht nur den gesamten Code, [erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). – Vallentin

+0

Das ist OpenGL, ich bin mir wirklich nicht sicher, ob es eine Möglichkeit gibt, was ich vereinfachen kann. Es ist eine komplette Spielengine und es werden keine Sprites dargestellt. Es ist wie ... 8 verschiedene Orte, die es könnte brechen. Allerdings ist der Code, den Sie betrachten möchten, in Views/Main.cs. –

Antwort

0

es gelöst: Mein Problem war, auf der Leitung 114, hatte ich den folgenden Code:

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; 
    } 

Wie folgt:

_uniforms.ContainsKey ("name") sollte _uniforms.ContainsKey (Name) sein