2017-04-09 56 views
-2

我已经能够获得窗口渲染,我很确定我的着色器正在工作,并且我可以从我的资源中获取图像,但是当我实际渲染视图时,我只是获取了我的蓝色背景并且没有出现任何精灵。OpenTK:精灵不渲染?

基本设计如下:

查看继承抽象类WindowBase,其中有大部分是繁重的工作,并宣布一个Shader(我只有一个,现在的资产)。我现在唯一的看法是Main.cs

然后我可以在视图中声明ObjectBase实例。对象具有由Sprites组成的动画,这些Sprites链接到由Texture Service通过OpenGL生成的纹理。

还有一个输入服务,虽然我确实有绑定到Esc键以关闭窗口的输入服务。但我怀疑该计划的一部分与这个问题有关。

更新:一片一片,我慢慢将原来的原始文件转换为我的文件,并在我交换到我的着色器系统后立即崩溃,所以问题就在此处。我会后我的代码VS他们在这里:

Their Shader class

My version

我在这一点上我猜一定是什么地方typo'd。或者我的一个循环只是不兼容。也许我在Assets Class中处理StreamReader的方式?

+2

不要只是转储所有代码,[创建一个最小化,完整和可验证的示例](https://stackoverflow.com/help/mcve)。 – Vallentin

+0

这是OpenGL,我真的不确定是否有办法简化我的工作。这是一个完整的游戏引擎,它不是渲染精灵。有像... 8个不同的地方,它可以打破。 但是你想看的代码是在Views/Main.cs中。 –

回答

0

解决了这个问题:我的问题是上线114,我有以下代码:

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

如下:

_uniforms.ContainsKey( “名称”)应该是_uniforms.ContainsKey(名称)