0

我当前的渲染器通过顶点的位置和颜色绘制表单。它还不能处理纹理。

struct Form
{
    unsigned int Positions, Colors, Elements, Program;
};

现在我想实现纹理的能力。由于在最终游戏中不会有没有纹理但颜色的形式,我想替换颜色功能而不是开发一个并列功能。

所以渲染器现在必须通过顶点的位置和纹理坐标来绘制表单。

struct Form
{
    unsigned int Positions, Coordinates, Elements, Texture, Program;
};

到现在为止还挺好。但是,如果无法在没有纹理的情况下进行渲染,如果图像文件不存在或由于某种原因无法加载,我的应用程序将无法绘制表单。因此,如果无法加载图像文件,我想实现回退到给定的纯色(比如粉红色)。

在不完全开发两个并列功能的情况下,如何实现这种回退?有没有通用的方法?我希望这可以在着色器中完成。或者也许我可以将粉红色纹理发送到视频卡,然后将所有形式视为平等。可悲的是,我不知道如何实现它,或者是否有可能。

4

2 回答 2

4

我已经通过程序创建一个虚拟检查器纹理并将其分配给任何没有任何有效纹理的对象来解决这个问题。它不是基于顶点颜色或网格颜色,而是有效的。并且不需要更改着色器,只需几行代码即可检查空纹理。

于 2013-01-03T15:32:21.703 回答
1

如果您从没有绑定纹理的纹理单元中采样,则检索到的样本始终是白色的;在没有完整纹理绑定的情况下从纹理中采样并不是错误。因此,您可以使用该白色来使用备用颜色对其进行调制。

于 2013-01-03T15:33:26.760 回答