我已经能够让窗口渲染,我很确定我的着色器正在工作,我可以从我的资产中获取图像,但是当我实际渲染视图时,我只是得到我的蓝色背景,没有显示精灵。
基本设计如下:
视图继承了抽象类 WindowBase,它承担了大部分繁重的工作并声明了一个着色器(我现在在 Assets 中只有一个)。我现在唯一的观点只是主.cs
然后,我可以在视图中声明 ObjectBase 实例。对象具有由精灵组成的动画,这些精灵链接到纹理服务通过 OpenGL 生成的纹理。
还有一个输入服务还没有做太多事情,尽管我确实将其绑定到Esc Key以立即关闭窗口。但我怀疑该程序的一部分与这个问题有关。
更新:一点一点地,我慢慢地将原件转换为我的,发现它一换到我的着色器系统就坏了,所以问题就在那里。我将在这里发布我的代码与他们的代码:
他们的着色器类
我的版本
我猜在这一点上我一定在某个地方打错了字。或者我的一个循环不兼容。也许是我在资产类中处理流阅读器的方式?
解决了:我的问题在第 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包含密钥("名称")。包含密钥(名称)